【问题标题】:How to modify XLSX column formatting with Python如何使用 Python 修改 XLSX 列格式
【发布时间】:2015-07-17 15:51:02
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python excel csv


    【解决方案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')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-18
      • 2021-10-20
      • 1970-01-01
      • 1970-01-01
      • 2020-09-10
      • 2021-10-22
      • 2018-01-23
      相关资源
      最近更新 更多