xlsxwriter& xlrd issue - xlsx文件在一台机器上保存为ZIP,但在另一台机器上保存为其他前4个字节

时间:2014-09-08 15:51:28

标签: python excel python-2.7 xlrd xlsxwriter

我正在使用带有.xlsx文件的xlsxwriter,因为我打算编写大量数据,而不是.xls所支持的,这就是我最初所做的事情:

output_name = "MY_XLSX_LOG_FILE" + str(datetime.now().strftime('%Y-%m-%d %H.%M.%S')) + '.xlsx'
xlsx_document = xlsxwriter.Workbook(output_name)
xlsx_document_sheet = xlsx_document.add_worksheet('sheet_1')
xlsx_document_sheet.write(0, 0, 'Col1')
xlsx_document_sheet.write(0, 1, 'Col2')
xlsx_document_sheet.write(0, 2, 'Col3')
xlsx_document_sheet.write(0, 3, 'Col4')
xlsx_document_sheet.write(0, 4, 'Col5')
xlsx_document_sheet.write(0, 5, 'Col6')
xlsx_document_sheet.write(0, 6, 'Col7')
xlsx_document_sheet.write(0, 7, 'Col8')
xlsx_document_sheet.write(0, 8, 'Col9')
xlsx_document.close()

然后我这样打开它:

file_name = FindLastLog() #this finds it successfuly
xlsx_document = xlrd.open_workbook(file_name)

和我一起工作很完美,但是当我把它交给别人并且在他的机器上运行它(相同的操作系统,相同的语言环境)时,他得到了这个:

XLRDError: Unsupported format, or corrupt file: Expected BOF record; found '\x11MyName'

'MyName' - 我完全不知道如何在xlsx文件中编写它。函数getbof中的函数open_workbook_xls引发了异常。在我的机器上,代码永远不会进入那里。在它检查前4个字节是否为b"PK\x03\x04"的地方,我的检查为真并分支到xlsx.open_workbook_2007_xml,而他的分支为xlsx.open_workbook_xls。我们都在Python 2.7,而且我不明白完全相同的xlsxwriter脚本正在编写不同的文件格式。可能导致这种情况的原因是什么?

1 个答案:

答案 0 :(得分:1)

您的同事可能有xlrd的旧版本,不支持xlsx文件。如果他们更新到最新版本或您拥有的版本,它将解决问题。