2014-09-08 3 views
1

xlsxwriter를 .xlsx 파일과 함께 사용하고 있습니다. 지원하지 않는 거대한 데이터를 작성하려고하기 때문에. XLS 여기에 내가 처음에하고 있어요 무엇 :xlsxwriter & xlrd 문제 - xlsx 파일 하나의 컴퓨터에서 ZIP로 저장되었지만 다른 컴퓨터에서 다른 처음 4 바이트 사용

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) 

그것은 그의 기계 (같은 OS, 같은 로케일)에, 그는 이것을 얻는다 :

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

'MyName' - 나는 이것이 xlsx 파일에 어떻게 쓰여졌는지 전혀 알지 못합니다. 예외는 함수 open_workbook_xls의 함수 getbof에서 발생합니다. 내 컴퓨터에서는 코드가 절대 입력되지 않습니다. 첫 번째 4 바이트가 b"PK\x03\x04"인지 확인한 곳에서 광산은 참으로 확인하고 xlsx.open_workbook_2007_xml으로 분기하고 xlsx.open_workbook_xls으로 분기합니다. 우리 둘 다 Python 2.7에 있는데 정확히 똑같은 xlsxwriter 스크립트가 다른 파일 형식을 쓰고 있다는 것을 이해하지 못합니다. 무엇이 이것을 일으킬 수 있습니까?

+1

동료의 스크립트가 xlsrd.open_workbook_xls에 도착했다고 믿는 것이 매우 어렵습니다. xlrd의 게시 된 버전에는 그런 것이 없습니다. 내가 믿는 것은'book.open_workbook_xls'을 얻는 것입니다. 이것은 @ jmcnamara의 대답과 일치합니다. –

답변

1

동료는 아마도 xlsx 파일을 지원하지 않는 xlrd의 이전 버전을 가지고있을 것입니다. 최신 버전이나 버전으로 업데이트하면 문제가 해결됩니다.

+0

저는 그에게 모듈을 보냈습니다. 그들은 똑같습니다. –

+0

반대로 생각하십시오. 두 시스템에서 모두 동일하면 동일한 결과를 얻어야합니다. 그래서 뭔가 다른 것입니다. xlsxwriter는 xls 파일을 생성 할 수 없으므로 xls 파일은 두 가지 중 하나 여야합니다. xlrd 버전 또는 xlsx 파일은 실제로 어떤 식 으로든 손상되었습니다. 두 시스템의 모듈 버전을 인쇄하고 xlsx 파일 크기와 xlsx 체크섬을 비교하십시오. – jmcnamara