2011-10-05 331 views
10

我使用xlwt模块将文本文件导入到excel中。但它只允许存储256列。有什么方法可以解决这个问题吗?Python-Xlwt超过256列

回答

1

这是事实陈述还是xlwt应该支持256列以上?你会得到什么错误?你的代码是什么样的?

如果它真的有256列限制,只需使用适当的python模块将数据写入csv文件并将文件导入到Excel。在xlwt包中的文件Column.py

0

8号线将列限制为256:

raise ValueError("column index (%r) not an int in range(256)" % colx) 

你可以在xlwt源更改此号码,让更多的列,但是这将中断与旧的兼容性( 编辑:ALL)版本的Excel。

编辑的xlwt维护者说,这是不行的,所以不要试图去做(我会在这里,因为我认为这是非常有用的警告离开这个答案)。

+0

我改变了,但它不工作队友 – Ricky

+0

哇,我的第一个投票!看看你的错误信息(你已经添加到你的答案中)并修复Row.py中的第76行。这是同样的问题。 –

+4

而不是你的最后一个,如果你继续像bashi-bazouk继续。有三个地方可以改变。这不会有帮助。 Excel 2007对于难以读取的数据尖叫,尝试恢复,并且惨败。为什么TF你认为这些错误检查在那里? **来自xlwt维护者的消息:不要这样做。这是浪费时间和精力。 Excel 2003,2007和2010将拒绝打开该文件。** –

13

xlwt支持创建由Excel 97-2003创建并由Excel 97向前读取的类型的XLS文件。文件格式限制为256列和65536行。 xlwt源代码中任何数量的256更改为某个其他编号都不会改变这一点。

你有3种选择,在复杂的递增顺序:

(1)其他的建议,写一个CSV文件。

(2)openpyxl ... Excel的2007+ XLSX/XLSM格式

(3)的Win32 COM(仅Windows)

+0

对我来说有效的是选项2的不同版本。我使用xlswriter(https://pypi.python.org/pypi/XlsxWriter)来代替,因为代码更改为它(对我而言)很少像workbook_name = “testraw.xls”> workbook_name =“testraw.xlsx”,wb = xlwt.Workbook()> wb = xlsxwriter.Workbook(name),ws = wb.add_sheet(sheet_name)> ws = wb.add_worksheet(sheet_name),wb .save(sheet_name +'。xlsx')> wb.close()。这可能会帮助别人快速转移。由于Excel 12 aka Excel 2007引入了.xlsx和.xlsb,最多可支持1,048,576行16,384列。因此应该为大多数目的而做。 – Aameer

0

使用xlsxwriter和熊猫。

import xlsxwriter, pandas 

writer = pandas.ExcelWriter(file, engine='xlsxwriter') 
pandas.to_excel(writer, sheet_name='Sheet1') 
writer.save() 
+0

问题是特别询问有关'xlwt'模块 – Milk

相关问题