Модуль записи xlsx вызывает ошибку в excel при открытии

В настоящее время я использую средство записи xlsx для передачи информации из обычного текстового файла в Excel. Однако после создания документа Excel большую часть времени я не могу его открыть. Я получаю следующую ошибку: «К сожалению, в Excel произошла ошибка, которая препятствует его правильной работе. В результате Excel необходимо закрыть.

Вы хотите, чтобы мы отремонтировали сейчас?»

Затем, когда я выбираю ремонт, он просто закрывает Excel. Иногда это сработает, и я смогу просмотреть файл.

Вот простой текстовый файл для справки:

"DOT_NUMBER","LEGAL_NAME","DBA_NAME","CARRIER_OPERATION","HM_FLAG","PC_FLAG","PHY_STREET","PHY_CITY","PHY_STATE","PHY_ZIP","PHY_COUNTRY","MAILING_STREET","MAILING_CITY","MAILING_STATE","MAILING_ZIP","MAILING_COUNTRY","TELEPHONE","FAX","EMAIL_ADDRESS","MCS150_DATE","MCS150_MILEAGE","MCS150_MILEAGE_YEAR","ADD_DATE","OIC_STATE","NBR_POWER_UNIT","DRIVER_TOTAL"
10000,"POWELL DISTRIBUTING CO INC","","A","N","N","9125 N BURRAGE AVE","PORTLAND","OR","97217-6961","US","P O BOX 17160","PORTLAND","OR","97217-0160","US","(503) 289-5558","(503) 735-0100","","06-DEC-16","20000","2015","01-JUN-74","OR","1","1"
1000002,"NEW JERSEY BOOM & ERECTORS INC","","A","N","N","120 SANS DRIVE","HENRYVILLE","PA","18332","US","120 SANS DRIVE","HENRYVILLE","PA","18332","US","(570) 620-1546","(570) 620-1517","[email protected]","06-JAN-16","243647","2015","22-JAN-02","PA","1","1"
1000004,"RAY TRUCKING LLC","","C","N","N","218 PEACHTREE ST","WARWICK","GA","31796","US","PO BOX 281","WARWICK","GA","31796","US","(229) 535-4140","","[email protected]","19-OCT-16","83000","2015","22-JAN-02","GA","2","2"
1000008,"GUERRERA LANDSCAPING LLC","","C","N","N","164 NUT PLAINS RD","GUILFORD","CT","06437-2138","US","164 NUT PLAINS RD","GUILFORD","CT","06437-2138","US","(203) 453-6693","","","25-MAR-06","30000","2005","22-JAN-02","CT","4","3"
1000009,"REINHARD CORP","","C","N","N","1647 REINHARD RD","CHESHIRE","CT","06410","US","1647 REINHARD RD","CHESHIRE","CT","06410","US","(203) 272-2869","","","11-APR-06","2000","2005","22-JAN-02","CT","1","1"
1000010,"DELUXE MOTOR COMPANY INC","DELUXE HARLEY DAVIDSON-BUELL","A","N","N","3300 CONESTOGA DR","CASPER","WY","82718","US","3300 CONESTOGA DR","GILLETTE","WY","82718","US","(307) 687-2001","(307) 687-0245","[email protected]","26-OCT-16","50000","2014","22-JAN-02","WY","8","3"
1000012,"CENTRAL HEATING & AIR INC","","C","N","N","600 S CHARLOTTE","SIOUX FALLS","SD","57103-2614","US","600 S CHARLOTTE","SIOUX FALLS","SD","57103-2614","US","(605) 371-3076","(605) 339-4409","[email protected]","26-OCT-10","89918","2008","22-JAN-02","SD","9","5"
1000593,"SIGNAL GATES INC","","B","N","N","1800 S 5TH AVE","TUCSON","AZ","85713-5713","US","1800 S 5TH AVE","TUCSON","AZ","85713-5713","US","(520) 628-3199","(520) 628-3620","[email protected]","01-NOV-13","100000","2013","24-JAN-02","AZ","7","9"

И код (обновленный):

import xlsxwriter

filename = "minitest.txt"
file = open(filename, 'r')
print("file opened")

workbook = xlsxwriter.Workbook("Carriers.xlsx")
worksheetA = workbook.add_worksheet()
worksheetB = workbook.add_worksheet()
worksheetC = workbook.add_worksheet()

rowA = 0
rowB = 0
rowC = 0

for line in file:
    line = line.replace('"', ' ')
    entry = line.split(",")
    col = 0

    if entry[3] == " A ":
        for item in entry:
            worksheetA.write(rowA, col, item)
            col += 1

        rowA += 1

    if entry[3] == " B ":
        for item in entry:
            worksheetB.write(rowB, col, item)
            col += 1

        rowB += 1

    if entry[3] == " C ":
        for item in entry:
            worksheetC.write(rowC, col, item)
            col += 1

        rowC += 1

workbook.close()
file.close() 

person Jordan Murray    schedule 02.11.2017    source источник
comment
row не должен быть определен в вашем цикле while.   -  person JacobIRR    schedule 02.11.2017
comment
Кроме того, битый файл, вы можете открыть его в Notepad/TextEdit?   -  person JacobIRR    schedule 02.11.2017
comment
Изменена вещь со строками, и я могу открыть ее в Блокноте. Это набор случайных символов с некоторыми различимыми элементами, такими как рабочий лист. Единственная идея, почему я получаю сообщение об ошибке, заключается в том, что рабочая книга все еще загружена в память.   -  person Jordan Murray    schedule 02.11.2017


Ответы (1)


Я не вижу твоей проблемы. Я немного упростил вашу программу, удалив циклы main() и running и переместив приращение row в оператор if. Следующим образом:

import xlsxwriter

filename = "minitest.txt"
file = open(filename, 'r')
print("file opened")

workbook = xlsxwriter.Workbook("Carriers.xlsx")
worksheetA = workbook.add_worksheet()

row = 0
for line in file:
    line = line.replace('"', ' ')
    entry = line.split(",")
    col = 0
    if entry[3] == " A ":
        print(entry[3])
        for item in entry:
            print(row, "|", col)
            print(item)
            worksheetA.write(row, col, item)
            col += 1

        row += 1

workbook.close()
file.close()

Затем я запустил его с вашим образцом текстового файла, и он выдал ожидаемый результат без предупреждения:

введите здесь описание изображения

Обновление: я запустил обновленную программу и также не обнаружил никаких проблем:

введите здесь описание изображения

person jmcnamara    schedule 02.11.2017
comment
Ценить это! не уверен, что тогда происходило с моей. Ну что ж! - person Jordan Murray; 03.11.2017
comment
Я обновил его, чтобы разделить их на три разных листа, и теперь я столкнулся с той же проблемой (обновленный код в исходном сообщении) - person Jordan Murray; 03.11.2017
comment
@ Джордан Мюррей Я тоже не вижу проблем с обновленной версией, см. Мое обновление выше. Какую версию XlsxWriter и какую версию Excel вы используете? - person jmcnamara; 03.11.2017
comment
Мне нужно решить некоторые проблемы с моим офисом Microsoft. Теперь я понял, что в коде нет ничего плохого, но мой офис Mircrosoft выдает мне одно и то же сообщение об ошибке, независимо от того, что я пытаюсь открыть. Еще раз спасибо! - person Jordan Murray; 03.11.2017