当前位置: 首页 > news >正文

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

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

1,读取 excel 文件返回 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文件

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

运行结果:

http://www.jsqmd.com/news/88732/

相关文章:

  • QMS软件系统:一体化智能平台,智绘卓越质量新图景——全星质量管理QMS软件系统应用解析
  • 重学计算机基础011:总线——计算机硬件的“高速公路网”,连接所有组件的核心枢纽
  • 电路中各种地,数字地DGND、模拟地AGND、功率地PGND、电源地GND、交流地AGND、大地EGND的区别及处理
  • 质量管理QMS软件系统:从精准管控到持续卓越——全星QMS如何驱动企业质量竞争力
  • 内容智能研发五 技术架构
  • 【AI白皮书】AI工具
  • 重学计算机基础012:x86架构32位通用寄存器——CPU的“核心数据操作台”,底层编程的基石
  • 职场思路重启,换个玩法!
  • VictoriaMetrics性能调优全攻略:从系统瓶颈到毫秒级响应
  • 12.14
  • pytorch——从核心特性到多模态与相机系统优化的实践 - 实践
  • Cesium快速入门到精通系列教程二十二:Cesium1.95中设置颜色的方式
  • 基于YOLOv8-Slimneck-WFU模型的苹果目标检测实现
  • 26、K8S-Sidecar代理
  • 基于协同过滤算法的运动场馆服务平台设计与实现
  • 低代码 | 低代码库研究 + 拖拽
  • 基于Django与Zabbix集成的运维故障管理系统设计与实现
  • 005-AES:采招网
  • DeepSeek-V3超长上下文处理终极指南:从原理到实战
  • 代码随想录 1971.寻找图中是否存在路径
  • 基于Python+django的智能停车系统的设计与实现(源码+lw+部署文档+讲解等)
  • IoC容器和bean概述
  • K8S资源无法删除处理方法
  • 80亿参数改写行业规则:Qwen3-VL-8B-Thinking-FP8如何重塑多模态AI应用
  • 音频二维码怎么做?音频二维码制作指南
  • 当水印遇见AI:一场像素级的美学修复之旅
  • 基于Spring Boot的在线教育平台(源码+lw+部署文档+讲解等)
  • 如何一键生成文件二维码?文件二维码在线制作指南
  • 程序在输入或输出的边界附近更容易出现缺陷,例如数组越界、循环次数错误
  • 天天劈砖休闲小游戏Linux演示教程