Python将.txt列表转换为.xls

时间:2018-08-23 11:19:42

标签: python xls xlwt

我发现这个有用的脚本可以将.txt文件列表转换为xls文件。我仍然是Python新手,在解决脚本中的错误时遇到了一些麻烦。使用的脚本如下:

mypath = "I give my path here"

from os import listdir
from os.path import isfile, join
textfiles = [ join(mypath,f) for f in listdir(mypath) if isfile(join(mypath,f)) and '.txt' in  f]

def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        return False        

import xlwt
import xlrd

style = xlwt.XFStyle()
style.num_format_str = '#,###0.00'  

for textfile in textfiles:
    f = open(textfile, 'r+')
    row_list = []
    for row in f:
        row_list.append(row.split(';'))
    column_list = zip(*row_list)
    workbook = xlwt.Workbook()
    worksheet = workbook.add_sheet('Sheet1')
    i = 0
    for column in column_list:
        for item in range(len(column)):
            value = column[item].strip()
            if is_number(value):
                worksheet.write(item, i, float(value), style=style)
            else:
                worksheet.write(item, i, value)
        i+=1
    workbook.save(textfile.replace('.txt', '.xls'))

该脚本为前10个文件生成的输出文件均小于1MB。脚本失败,导致为〜42MB的文件产生以下错误消息:

 File
 "C:\Users\me\AppData\Local\Continuum\anaconda3\lib\site-packages\xlwt\Row.py",
 line 37, in __init__
     raise ValueError("row index was %r, not allowed by .xls format" % rowx)
 ValueError: row index was 65536, not allowed by .xls format

有人可以协助我解决错误吗?

1 个答案:

答案 0 :(得分:1)

您收到错误消息,因为文件格式.xls仅允许65536行(索引从0开始)。

您应该考虑使用.xlsx格式,或者如果需要向后兼容,或者如果行数超过65536,则可以使用.xlsx作为“后备”格式,或者将输出分成多个文件。