python用openpyxl操作excel-读取或创建excel文件

python用openpyxl操作excel-读取或创建excel

1,读取 excel 文件返回 workbook 对象

python 复制代码
from openpyxl import Workbook, load_workbook

def excel_read(file_path):
    """ 读取Excel文件返回workbook对象 """
    if not os.path.exists(file_path):
        logger.error(f'文件{file_path}不存在')
        return None
    wb = load_workbook(file_path)
    return wb

2,可创建指定名称,含有多个表sheet名称的excel文件

python 复制代码
import logging
import com.pro001.log.pro_log_config as pro_log_config
from openpyxl import Workbook, load_workbook
from openpyxl.styles import  Font, Alignment, Side, PatternFill, Border
import os
import datetime
import random
import pandas as pd


def create_sn(prefix, output_len=4):
    '''生成含有前缀并至少带指定长度格式的序列号,
    格式:prefix_d0{output_len}1'''
    if output_len < 1:
        output_len = 1
    sn = 0
    while True:
        sn += 1
        if len(str(sn)) > output_len:
            # 当大于指定位数时直接加上位数
            yield f'{prefix}' + str(sn)
        else:
            yield f'{prefix}' + '{:0{}}'.format(sn, output_len)


def excel_create(file_path, file_name, *sheet_name):
    """ 根据参数创建Excel文件并建立sheet """
    try:
        if not os.path.exists(file_path):
            os.makedirs(file_path)
        if not file_name or not file_name.lower().endswith('.xlsx'):
            file_name = datetime.datetime.now().strftime('%Y%m%d_%H%M%S') + '.xlsx'
        full_file_path = os.path.join(file_path, file_name)
        sn = create_sn('TB', 3)
        sheet_name_list = []
        if not sheet_name:
            sheet_name = next(sn)
        else:
            for item in sheet_name:
                sheet_name_list.append(item)
        # 创建 Workbook 对象,
        wb = Workbook()
        # 创建指定名称的工作表
        for sheet_name in sheet_name_list:
            wb.create_sheet(sheet_name)
        # 删除建立时生产的第一个默认sheet对象
        shnames = wb.sheetnames
        wb.remove(wb[shnames[0]])
        wb.save(full_file_path)

        # 获取wb对象所有的sheet名称
        shnames = wb.sheetnames
        # 关闭wb对象
        wb.close()
        logger.info(f'Excel文件:{full_file_path} 创建成功!')
        logger.info(f'工作表:' + ','.join(shnames))
        return full_file_path
    except Exception as e:
        logger.error(f'Excel文件:{full_file_path} 创建失败!info:\n{e}')


def main():
    """主函数"""
    excel_create(r'F:\appData', '', 'TB01', 'TB02', 'TB03')
    

if __name__ == '__main__':
    print('-' * 60)
    main()

运行结果:

相关推荐
小霖家的混江龙2 小时前
大模型如何分辨 “狼” 和 “狗” —— 词向量的训练过程
人工智能·python·llm
大猫子的技术日记2 小时前
【工具篇】极简入门 UV Python项目管理工具
开发语言·python·uv
程序媛徐师姐2 小时前
Python基于Flask的mooc课程情感分类系统【附源码、文档说明】
python·flask·python慕课课程情感分类·mooc课程情感分类系统·慕课课程情感分类系统·python课程情感分类系统·python课程情感分类
shenzhenNBA2 小时前
python用openpyxl操作excel-单元格操作
python·excel·单元格操作
ekprada2 小时前
Day 39 - 图像数据与显存
人工智能·python
森焱森2 小时前
当八字命理遇上软件开发:一张“流派架构图”+ 实战爬虫指南
驱动开发·爬虫·python·flask·pygame
商bol452 小时前
答案解析5
excel
我的xiaodoujiao2 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 33--基础知识 8--切换窗口句柄
python·学习·测试工具·pytest
dhdjjsjs2 小时前
Day37 PythonStudy
python