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

DeepSeek辅助编写的将ET格式文件转换为xls和xlsb格式程序

1.ET格式文件转换为xls

import xlrd
import xlwtdef et_to_xls(input_et, output_xls):"""将ET文件转换为XLS格式参数:input_et: 输入的ET文件路径output_xls: 输出的XLS文件路径"""try:# 1. 使用xlrd读取ET文件print(f"正在读取ET文件: {input_et}")et_book = xlrd.open_workbook(input_et)# 2. 创建xls工作簿xls_book = xlwt.Workbook(encoding='utf-8')# 3. 复制每个工作表print("开始转换工作表...")for sheet_index in range(et_book.nsheets):et_sheet = et_book.sheet_by_index(sheet_index)# 创建对应的xls工作表xls_sheet = xls_book.add_sheet(et_sheet.name)print(f"  转换工作表: {et_sheet.name} (共{et_sheet.nrows}行)")style_normal = xlwt.easyxf()style_date=xlwt.easyxf(num_format_str='YYYY-MM-DD')style_int=xlwt.easyxf(num_format_str='0')style_double=xlwt.easyxf(num_format_str='0.00')  #defined outside of the loop to solve error of More than 4094 XFs (styles)# 4. 复制单元格数据和格式for row in range(et_sheet.nrows):for col in range(et_sheet.ncols):try:cell = et_sheet.cell(row, col)value = cell.value# 处理不同数据类型if cell.ctype == xlrd.XL_CELL_DATE:# 转换日期格式value = xlrd.xldate.xldate_as_datetime(value, et_book.datemode)style = style_dateelif cell.ctype == xlrd.XL_CELL_NUMBER:style =style_int if value==int(value) else style_doubleelse:style = style_normalxls_sheet.write(row, col, value, style)except Exception as cell_error:print(f"      警告: 处理单元格({row+1},{col+1})时出错: {str(cell_error)}")continue# 5. 保存xls文件print(f"正在保存XLS文件: {output_xls}")xls_book.save(output_xls)print("转换完成!")except xlrd.XLRDError as e:print(f"错误: 无法读取ET文件 - {str(e)}")except Exception as e:print(f"发生未知错误: {str(e)}")# 示例用法
if __name__ == "__main__":input_file = "ducknyc200.et"  # 替换为你的ET文件路径output_file = "Output.xls"    # 输出文件路径et_to_xls(input_file, output_file)# 验证转换结果try:print("\n验证转换结果:")xls_book = xlrd.open_workbook(output_file)print(f"成功读取输出文件,包含 {xls_book.nsheets} 个工作表")for sheet in xls_book.sheets():print(f"  - {sheet.name}: {sheet.nrows}行 x {sheet.ncols}列")except Exception as e:print(f"验证失败: {str(e)}")

执行输出

python et2xls.py
正在读取ET文件: ducknyc200.et
开始转换工作表...转换工作表: ducknyc200 (共201行)
正在保存XLS文件: Output.xls
转换完成!验证转换结果:
成功读取输出文件,包含 1 个工作表- ducknyc200: 201行 x 41

2.ET格式文件转换为xlsb

import xlrd
from pyxlsbwriter import XlsbWriter
from datetime import datetimedef et_to_xlsb(input_et, output_xlsb):"""将ET文件转换为XLSB格式参数:input_et: 输入的ET文件路径output_xlsb: 输出的XLSB文件路径"""try:# 1. 使用xlrd读取ET文件print(f"正在读取ET文件: {input_et}")et_book = xlrd.open_workbook(input_et)print(et_book.nsheets);# 2. 创建XLSB工作簿print(f"正在创建XLSB文件: {output_xlsb}")with XlsbWriter(output_xlsb) as xlsb_writer:# 添加工作表xlsb_writer.add_sheet("Sheet1")# 3. 处理每个工作表for sheet_index in range(et_book.nsheets):et_sheet = et_book.sheet_by_index(sheet_index)print("et_sheet.ncols", et_sheet.ncols);print(f"  处理工作表: {et_sheet.name} (共{et_sheet.nrows}行)")# 写入数据data_to_write = []# 添加标题行(如果有特殊处理需求可以在此修改)if et_sheet.nrows > 0:first_row = [et_sheet.cell_value(0, col) for col in range(et_sheet.ncols)]#print(first_row)data_to_write.append(first_row)# 添加数据行for row in range(1 if et_sheet.nrows > 0 else 0, et_sheet.nrows):row_data = []for col in range(et_sheet.ncols):cell = et_sheet.cell(row, col)#处理不同数据类型if cell.ctype == xlrd.XL_CELL_DATE:#转换日期格式dt = xlrd.xldate.xldate_as_datetime(cell.value, et_book.datemode)row_data.append(dt)elif cell.ctype == xlrd.XL_CELL_NUMBER:row_data.append(float(cell.value))elif cell.ctype == xlrd.XL_CELL_BOOLEAN:row_data.append(bool(cell.value))else:row_data.append(str(cell.value)[:200]) # use [:200] to solve 'B' format requires 0 <= number <= 255data_to_write.append(row_data)#print(data_to_write[2])# 写入XLSB文件xlsb_writer.write_sheet(data_to_write)print("转换完成!")except xlrd.XLRDError as e:print(f"错误: 无法读取ET文件 - {str(e)}")except Exception as e:print(f"发生未知错误: {str(e)}")if __name__ == "__main__":# 配置输入输出input_file = "ducknyc200.et"    # 替换为你的ET文件路径output_file = "ducknyc200.xlsb"  # 输出文件路径et_to_xlsb(input_file, output_file)

执行输出

python et2xlsb.py
正在读取ET文件: ducknyc200.et
1
正在创建XLSB文件: ducknyc200.xlsb
et_sheet.ncols 41处理工作表: ducknyc200 (共201行)
转换完成!

转换前后的文件大小

2025/08/18  18:36           170,496 ducknyc200.et
2025/08/18  19:53           137,728 output.xls
2025/08/18  20:31            43,152 ducknyc200.xlsb
http://www.dtcms.com/a/338303.html

相关文章:

  • 数据结构:查找表
  • Unity爆炸力场实战指南
  • 94、23种设计模式之工厂方法模式
  • 循序渐进学 Spring (下):从注解、AOP到底层原理与整合实战
  • SpringBoot 自研运行时 SQL 调用树,3 分钟定位慢 SQL!
  • SpringBoot3整合OpenAPI3(Swagger3)完整指南
  • 王树森深度强化学习DRL(三)围棋AlphaGo+蒙特卡洛
  • Laravel中如何使用php-casbin
  • MP4 文件格式验证工具
  • onRequestHide at ORIGIN_CLIENT reason HIDE_SOFT_INPUT fromUser false
  • kafka的pull的依据
  • python 数据拟合(线性拟合、多项式回归)
  • 【2025CVPR-目标检测方向】学习稳健且硬件自适应的对象检测器,以应对边缘设备的延迟攻击
  • 【K8s】K8s 服务优雅下线调试记录
  • C# NX二次开发:字符串控件StringBlock讲解
  • 【MongoDB】常见八股合集,mongodb的特性,索引使用,优化,事务,ACID,聚合查询,数据复制机制,理解其基于raft的选举机制
  • 虚拟货币(BTC)走势分析指标体系
  • JMeter与大模型融合应用之构建AI智能体:评审性能测试脚本
  • 浅入浅出常见敏感数据处理的加密算法
  • 如何在 Ubuntu 24.04 或 22.04 LTS 上安装 PowerShell
  • SHA-256 详解
  • UE5 批量编译蓝图技巧
  • Linux Miniconda安装教程与conda常用指令介绍
  • 区块链数字存证应用
  • 健身房预约系统SSM+Mybatis实现(四、登录页面+JWT+注销)
  • 【前端智能化】AG-UI实践及原理浅析
  • 决策树的笔记
  • steal tsoding‘s pastebeam code as go server
  • 芋道审批流配置流程表单超详细介绍
  • 15.web api 6