xlsxwriter&xlrd问题 – 在一台机器上保存为ZIP格式的xlsx文件,但其他前四个字节在另一台机器上
我正在使用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'
我'MyName'
– 我完全不知道这是如何写入xlsx文件。 函数getbof
中的函数open_workbook_xls
引发了exception。 在我的机器上,代码永远不会进入那里。 在检查前4个字节是否为b"PK\x03\x04"
,我的检查是否为真,分支到xlsx.open_workbook_2007_xml
,而他的分支是xlsx.open_workbook_xls
。 我们都在Python 2.7
,我不明白完全相同的xlsxwriter
脚本正在写一个不同的文件格式。 什么可能导致这个?
你的同事可能有一个不支持xlsx文件的旧版xlrd。 如果他们更新到最新版本或者您拥有的版本,将会解决这个问题。