如何将XLSM文件指定前15列范围的数据转换为CSV格式
需求可行性
该需求完全可以实现,仅需要对你的现有代码做少量调整即可。
调整方案
你当前的代码会读取工作表每行的所有列内容写入CSV,只需要对每行的单元格列表做前15位的切片,就能过滤掉不需要的后续列数据。
优化后完整代码
import openpyxl as ox import csv # 读取xlsm文件,不需要执行宏的话默认参数即可正常读取内容 wb = ox.load_workbook('C:/Quebras.xlsm') ws = wb['Quebras'] # 使用with上下文管理器管理文件句柄,避免资源泄漏 # 指定newline=''避免Windows下写入csv出现多余空行 # 指定encoding='utf-8-sig'兼容Excel直接打开、避免中文乱码 with open('C:/Quebras.csv', 'w', newline='', encoding='utf-8-sig') as f: csv_writer = csv.writer(f) for row in ws.rows: # 切片取前15个单元格的内容写入,仅保留前15列 csv_writer.writerow([cell.value for cell in row[:15]])
可选优化
如果你的xlsm文件体积较大,读取速度较慢,可以给load_workbook方法添加read_only=True参数,开启只读模式提升读取效率:
wb = ox.load_workbook('C:/Quebras.xlsm', read_only=True)
内容的提问来源于stack exchange,提问作者karek77
相关产品推荐
相关产品推荐

