xlsxwriter与xlrd问题 - 一台机器上的xlsx文件保存为ZIP,另一台机器前4个字节不同
我在使用 xlsxwriter 来处理 .xlsx 文件,因为我想写入大量数据,而 .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
里。我的电脑上,代码根本没有进入那个地方。在检查前四个字节是否是 b"PK\x03\x04"
的时候,我的检查是对的,所以跳到了 xlsx.open_workbook_2007_xml
,而他却跳到了 xlsx.open_workbook_xls
。我们都是在用 Python 2.7
,我不明白为什么完全相同的 xlsxwriter
脚本会写出不同的文件格式。这可能是什么原因呢?
1 个回答
1
你的同事可能使用的是一个旧版本的xlrd,这个版本不支持xlsx格式的文件。如果他们更新到最新版本或者和你一样的版本,就能解决这个问题。