如何使用Python修改XLSX列格式

时间:2015-07-17 15:51:03

标签: python excel csv

我有数百个XLSX文件,这些文件都包含包含长数字帐号的列。我需要自动将所有这些文件转换为CSV。使用像ssconvert这样的工具,这是微不足道的。但是,由于Excel和Libreoffice中的 bug feature,将使用科学计数法显示长数字字段,如果导出为CSV,则将保留此格式化数字(不是基础数据)。

这意味着任何自动转换为CSV都会截断帐号,因为值1240800388917将以1.2408E + 12或1240800000000写入CSV,从而导致数据损坏。

通过手动打开Excel文件并将这些列设置为“文本”格式,可以轻松解决此问题。但是,为数百个文件执行此操作有点单调乏味,特别是因为其中许多文件具有奇怪的宏和格式,这使得Libreoffice需要几分钟才能打开每个文件(另一个原因是我想将它们全部转换为CSV格式第一名)。

使用Python自动打开每个文件并将整个列的格式更改为“text”的最简单方法是什么?我看到很多关于如何读取XLS / XLSX文件的Python示例,并且在某些情况下会编写它们,但我可以找到一些关于操作列的默认格式的指南。

1 个答案:

答案 0 :(得分:1)

给我一​​些试验和错误,并在代码中挖掘,但解决方案结果是微不足道的。

from openpyxl import load_workbook
wb = load_workbook('myfile.xlsx')
ws = wb.active
for row in ws.rows:
    row[col_index].number_format = row[col_index].style.number_format = '@'
wb.save('myfile-fixed.xlsx')