xlsxwriter和xlwt:将一个string列表写入一个单元格
我目前正在使用xlwt相当成功地创build.xls文件。 我也正在学习xlsxwriter的未来可能的应用程序,我需要它的一些function。
xlwt平稳地将string列表写入单元格。
例如
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写入方法,并给出了大致相似的错误。
其他研究:我已经相当彻底地search了这个网站。 我也经历了优秀的xlsxwriter PDF格式,并检查了xlsxwriter Github页面。 到目前为止,我还没有遇到任何解决这个问题的东西。
同样,xlwt现在还不错,我希望在不久的将来需要添加图表和迷你图以及创buildxlsx文件。
谢谢,
在俱乐部的老人
不,你不能用xlsxwrite.write()
写一个list
types。
检查文档
如果上述types都不匹配,则使用float()评估值,以查看它是否与用户定义的floattypes相对应。 如果是,则使用write_number()写入。
这就是为什么你得到错误TypeError: float() argument must be a string or a number
要解决此问题,请尝试将list
转换为string
,如Paulo Scardine(在注释中)所示:
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))
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版本的示例程序中的exception:
TypeError: Unsupported type <type 'list'> in write()
我一直在通过类似的问题。
通过使用枚举获取列表中每个string的索引,然后将其作为行引用和数据项传递给.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()