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()

运行结果:

相关推荐
小田学Python7 小时前
100行Python代码,搭一个能干活的AI Agent
python·langchain·大模型·ai agent
Csvn8 小时前
🐍 Day3 : Python 容器精讲 — list、dict、set、tuple 底层实现与高级操作
后端·python
weixin-a153003083168 小时前
python-装饰器
开发语言·python
我的xiaodoujiao8 小时前
快速学习Python基础知识详细图文教程17--类型注解和断点调试
开发语言·python·学习·测试工具
每天吃饭的羊9 小时前
Chrome DevTools MCP
python
水獭比特11 小时前
localhost 不是安全边界:给 Agent Web 入口补上四层门禁
人工智能·python
Generalzy11 小时前
Whisper + VAD + TTS:一套完整的 Python 本地语音处理流水线
python·whisper·语音识别
qpsj11 小时前
让 LLM 控制 AutoCAD/ZWCAD:COM 自动化 + MCP 封装
python·llm
赟爸11 小时前
直播切片素材杂乱不好复用,易元AI要怎么处理
大数据·人工智能·python
怪奇云呼军12 小时前
从声音特征到 CRM 回流:闪电智能 Voice Agent 沟通策略自适应系统 v1 实战
android·人工智能·python·音视频·语音识别