查看: 144|回复: 3

Spire.XLS for Python实现Excel批量转TXT及编

[复制链接]
发表于 2 小时前 | 显示全部楼层 |阅读模式
在日常数据处理中,将Excel文件转换为纯文本(TXT)格式是一项基础且频繁的需求。TXT文件仅包含纯字符数据,不携带格式、宏或公式,适合跨平台传输、日志记录和轻量级数据交换。本文介绍如何利用Spire.XLS for Python库,通过编程方式批量或精细地完成Excel到TXT的转换,包括环境配置、核心参数解析、单工作表导出、多工作表批量导出以及典型应用场景和注意事项。
  1. pip install Spire.XLS
复制代码
安装完成后,在Python脚本中导入相关模块即可使用。

Spire.XLS for Python提供了Worksheet.SaveToFile()接口,用于将工作表保存为TXT文本。其核心参数包括:
- fileName(字符串):输出文本文件的完整路径及名称。
- separator(字符串):列分隔符,常见取值有制表符\t、逗号,或空格。
- encoding(编码对象):字符编码,推荐使用UTF-8以支持多语言。

分隔符的选择直接影响下游程序解析的正确性,需根据数据内容谨慎决定。

**基础实现:单工作表导出**

对于只包含单个工作表的Excel文件,加载文件后获取第一个工作表,调用SaveToFile即可。
  1. from spire.xls import *
  2. from spire.xls.common import *
  3. workbook = Workbook()
  4. workbook.LoadFromFile("销售数据.xlsx")
  5. sheet = workbook.Worksheets[0]
  6. sheet.SaveToFile("销售数据.txt", "\t", Encoding.get_UTF8())
  7. workbook.Dispose()
复制代码

若希望输出逗号分隔的格式(类似CSV),只需将分隔符参数"\t"改为","即可。

**进阶处理:多工作表批量导出**

实际项目中,Excel文件常包含多个工作表,需将每个工作表独立保存为对应的TXT文件。以下封装了批量处理函数:
  1. from spire.xls import *
  2. from spire.xls.common import *
  3. import os
  4. def export_all_sheets_to_txt(input_file, output_dir, delimiter="\t"):
  5.     os.makedirs(output_dir, exist_ok=True)
  6.     workbook = Workbook()
  7.     workbook.LoadFromFile(input_file)
  8.     for i in range(workbook.Worksheets.Count):
  9.         sheet = workbook.Worksheets[i]
  10.         output_path = os.path.join(output_dir, f"sheet_{i+1}_{sheet.Name}.txt")
  11.         sheet.SaveToFile(output_path, delimiter, Encoding.get_UTF8())
  12.     workbook.Dispose()
  13. # 调用示例
  14. export_all_sheets_to_txt("年度报告.xlsx", "output_texts")
复制代码

该函数自动遍历所有工作表,以“索引_名称”方式命名文件,避免重名冲突,适用于任意数量的工作表。

**典型应用场景**
- 数据清洗前置步骤:TXT文件去除富文本格式、隐藏字符和公式,适合作为数据清洗脚本的标准输入。
- 轻量级日志记录:将Excel配置表转为TXT后写入日志系统,可直接用cat、tail等命令查看,无需打开Office。
- 跨平台数据交换:TXT文件在所有操作系统上均可读写,避免Excel版本兼容问题。

**操作注意事项**
- 编码一致性:若Excel包含中文、日文等特殊字符,务必指定Encoding.get_UTF8(),否则可能导致字符丢失或乱码。
- 分隔符冲突:数据内容如果包含所选分隔符(如数据内有逗号而分隔符也用逗号),会导致解析错位。建议使用数据中极少出现的制表符(\t)作为分隔符。
- 内存与资源管理:大文件转换占用内存较多,操作完成后及时调用workbook.Dispose()释放资源,防止在长时间运行的服务器中引发内存溢出。
- 环境独立性:该方案不依赖本地安装的Office或Excel应用,适合部署在Linux服务器或Docker容器中,作为后端数据处理服务的一部分。

通过Spire.XLS for Python的Worksheet.SaveToFile()接口,开发者可以标准化地完成Excel到TXT的转换,并根据实际需求集成到数据流水线、定时任务或Web后端服务中。建议对大文件场景进行性能测试,并谨慎选择分隔符,确保输出文件被下游系统正确解析。
回复

使用道具 举报

发表于 2 小时前 | 显示全部楼层

Re: Spire.XLS for Python实现Excel批量转TXT及编

感谢分享!这篇教程非常实用,把Spire.XLS的核心用法讲得很清楚,尤其是多工作表批量导出的封装函数,直接拿来就能用。我之前手动处理Excel转TXT时总得一个个另存为,效率低还容易漏掉工作表,这下可以写脚本一键搞定了。另外你提到的分隔符冲突提醒很关键,之前我踩过用逗号结果数据里也有逗号的坑,后来换成制表符确实稳多了。顺便问一下,楼主有没有试过处理特别大的Excel文件(比如几万行)?内存释放那块我挺注意的,但还是想知道实际跑下来性能怎样。
回复 支持 反对

使用道具 举报

发表于 2 小时前 | 显示全部楼层

Re: Spire.XLS for Python实现Excel批量转TXT及编

感谢分享,很实用的教程!平时手动转TXT确实繁琐,用代码批量处理能省不少时间。不过想请教一下,如果Excel文件带有密码保护或者只允许特定用户编辑,Spire.XLS能正常读取吗?另外,处理超大文件(比如几十万行)时,有没有什么优化建议,比如分页读取或者流式写入?
回复 支持 反对

使用道具 举报

发表于 2 小时前 | 显示全部楼层

Re: Spire.XLS for Python实现Excel批量转TXT及编

楼主分享的方法非常实用,特别是批量导出时自动按“索引_名称”命名文件,能有效避免重名冲突。另外建议补充一点:如果Excel中某些单元格包含换行符,导出为TXT时可能需要额外处理,否则下游解析容易出错。可以用replace将\r\n替换为空格后再保存。整体流程清晰,适合直接集成到数据管道中。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-7-8 11:37 , Processed in 0.034714 second(s), 18 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部