【问题标题】:Convert text files to Microsoft Excel that can accommodate more than 65536 rows将文本文件转换为可容纳超过 65536 行的 Microsoft Excel
【发布时间】:2015-10-23 20:34:56
【问题描述】:

我发现Python code(如下)可以将文本文件转换为Microsoft Excel,并且可以正常工作。然而,65,536 是 Excel 97、Excel 2000、Excel 2002 和 Excel 2003 支持的最大电子表格行数,而 Excel 2007、2010 和 2013 支持 1,048,576 行。

由于我的文本文件包含超过 65,536 行,我该如何修改代码,以便将文本文件转换为可容纳 1,048,576 行的 Excel 版本?

import glob
import csv
import xlwt

for filename in glob.glob("C:\Users\MSI\Desktop\Line Item Besar\\*.txt"):
    spamReader = csv.reader((open(filename, 'rb')), delimiter='|',quotechar='"')
    encoding = 'latin1'
    wb = xlwt.Workbook(encoding=encoding)
    sheet=xlwt.Workbook()
    sheet = wb.add_sheet('sheet 1')
    newName = filename
    for rowx, row in enumerate(spamReader):
        for colx, value in enumerate(row):
            sheet.write(rowx, colx, value)
    wb.save(newName.replace('.txt','.xls'))

print "Done"

【问题讨论】:

    标签: python excel


    【解决方案1】:

    您需要将文件另存为.xlsx,这是一种现代XML 格式,现在用于代替旧的二进制.xls。但是,关于 SO 有几个问题指出 xlwt 不适用于 .xlsx,因此您可能必须切换到另一个模块,例如 XlsxWriter

    【讨论】:

      【解决方案2】:

      XlsxWriterOpenPyXL 支持创建 100 万行的 Excel xlxs 文件。

      这是使用 XlsxWriter 的程序版本:

      import glob
      import csv
      from xlsxwriter import Workbook
      
      for filename in glob.glob("C:\path\*.txt"):
          spamReader = csv.reader((open(filename, 'rb')),
                                  delimiter='|', quotechar='"')
      
          newName = filename.replace('.txt', '.xlsx')
      
          workbook = Workbook(newName, {'strings_to_numbers': True})
          worksheet = workbook.add_worksheet()
      
          for rowx, row in enumerate(spamReader):
              for colx, value in enumerate(row):
                  worksheet.write(rowx, colx, value)
      
          workbook.close()
      
      print "Done"
      

      【讨论】:

      • 嗨 jmcnamara。感谢您的代码,但是我收到了 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape。请您指教。提前致谢。
      • 您需要确保使用csv 模块从txt 文件中读取的任何数据都转换为UTF-8。请参阅 how to handle Unicode CSV data 上的 csv 模块的文档。
      猜你喜欢
      • 2012-02-16
      • 1970-01-01
      • 2015-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多