如何用Python修改XLSX列的格式

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

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

这很容易通过手动打开Excel文件并将这些列设置为“文本”格式来解决。 然而,对于数百个文件来说,这样做有点繁琐,特别是因为这些文件中有许多都有奇怪的macros和格式,使得LibreOffice需要花费几分钟来打开每一个文件(另一个原因是我想将它们全部转换为CSV第一名)。

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

带了我一些试验和错误,并在代码中挖掘,但解决scheme竟然是微不足道的。

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