将文本文件转换为可容纳超过65536行的Microsoft Excel

时间:2015-10-23 03:51:43

标签: python excel

我发现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"

2 个答案:

答案 0 :(得分:1)

您需要将文件另存为.xlsx,这是一种现代XML格式,现在使用的格式代替旧的二进制文件.xls。但是,有几个问题表明xlwt不能与.xlsx一起使用,因此您可能需要切换到另一个模块,例如XlsxWriter

答案 1 :(得分:0)

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"