6

我目前正在使用 xlwt 非常成功地创建 .xls 文件。我还在学习 xlsxwriter 以应对将来可能需要它的一些功能的应用程序。

xlwt 将字符串列表顺利写入单元格。

例如

import xlwt
a = ['January\n','February\n','March\n','April\n','May\n','June\n']
book = xlwt.Workbook()
sheet = book.add_sheet('Test')
sheet.write(0,0,a)
book.save('Test.xls')

打开 Test.xls 文件,启用自动换行,单元格 A1 显示:

January
February
March
April
May
June

我试图用 xlsxwriter 做类似的事情

import xlsxwriter
xbook = xlsxwriter.Workbook('Test.xlsx')
xsheet = xbook.add_worksheet('Test')
xsheet.write(0,0,a)

在这里,我收到一条冗长的错误消息,最终导致

...anaconda/lib/python2.7/site-packages/xlsxwriter/worksheet.pyc in write(self, row, col, *args)
    416         # We haven't matched a supported type. Try float.
    417         try:
--> 418             f = float(token)
    419             if not self._isnan(f) and not self._isinf(f):
    420                 return self.write_number(row, col, f, *args[1:])

TypeError: float() argument must be a string or a number

我尝试了其他 xlsxwriter 写入方法,并且都给出了大致相似的错误。

其他研究:我已经相当彻底地搜索了这个网站。我还浏览了出色的 xlsxwriter PDF 并查看了 xlsxwriter Github 页面。到目前为止,我还没有遇到任何可以解决这个问题的东西。

同样,xlwt 现在很好,我希望在不久的将来需要添加图表和迷你图以及创建 xlsx 文件。

谢谢,

俱乐部里的老家伙

4

3 回答 3

4

我一直在解决类似的问题。

能够通过使用 enumerate 获取列表中每个字符串的索引,然后将其作为 Row 引用和数据项传递给 .write 来实现所需的结果:

import xlsxwriter

a = ['January\n','February\n','March\n','April\n','May\n','June\n']

xbook = xlsxwriter.Workbook('Test.xlsx')
xsheet = xbook.add_worksheet('Test')

for idx, month in enumerate(a):
    xsheet.write(idx,0,a[idx])

xbook.close()
于 2016-08-12T08:42:13.633 回答
3

不,您不能list使用xlsxwrite.write().

检查文档

如果上述类型均不匹配,则使用 float() 评估值以查看它是否对应于用户定义的浮点类型。如果是,则使用 write_number() 写入。

这就是为什么你得到错误TypeError: float() argument must be a string or a number

要解决此问题,请按照 Paulo Scardine 的建议(在评论中)将其转换list为 a :string

import xlsxwriter
a = ['January\n','February\n','March\n','April\n','May\n','June\n']
xbook = xlsxwriter.Workbook('Test.xlsx')
xsheet = xbook.add_worksheet('Test')
xsheet.write(0,0,''.join(a))
于 2014-09-17T06:29:57.890 回答
3

XlsxWriter 中的write()方法不支持列表。

您可以使用工作表方法编写列表write_row()

import xlsxwriter

a = ['January\n','February\n','March\n','April\n','May\n','June\n']

xbook = xlsxwriter.Workbook('Test.xlsx')
xsheet = xbook.add_worksheet('Test')

xsheet.write_row(0, 0, a)

xbook.close()

PS 这个例外在这种情况下不是很有帮助,将在下一个版本中修复。这是使用 GitHub 上 XlsxWriter 版本的示例程序的例外情况:

TypeError: Unsupported type <type 'list'> in write()
于 2014-09-17T07:02:03.990 回答