Использование ошибок xlsxwriter merge_row - PullRequest
2 голосов
/ 27 января 2020

Я экспортирую файл Excel с помощью xlsxwriter и пытаюсь объединить несколько ячеек, используя .merge_range(), но, похоже, я получаю ошибки, связанные с постоянной памятью, даже если для этого параметра установлено значение False.

workbook инициируется следующим образом:

workbook = xlsxwriter.Workbook(r'\\network\Checking doc\Monthly Checks.xlsx', {'constant_memory' : False})

Форматирование ячеек обрабатывается:

merge_header = workbook.add_format({'align' : 'center', 'valign' : 'vcenter', 'border' : 1})
merge_header.set_bg_color('#BFBFBF')

При объединении ячеек используется a для l oop в a для l oop, который просматривает 2 списка, чтобы получить координаты ячейки.

У моих списков нет хороших имен, которые я знаю, но они:

other_checkheads = ["C6 - LOGS", "C7 - HWS", "C8 - TMP", "C9 - WUP", 

"C10 - SWUP", "C11 - ADGP", "C12 - FWSWFIRM", "C13 - WBFIL", "C14 - FILES", "C15 - DOMPASS", "C16 - NAT",
"C17 - SECGP", "C18 - BIOS", "C19 - BIOSFW", "C20 - MOT", "C21 - SSL", "C22 - WARR"]
checkheads_letters = ["Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "AA", "AB", "AC", "AD", "AE", "AF", "AG"]

l oop:

for letter in checkheads_letters:
                for head in other_checkheads:
                    row = ((letter + str(2)) + (":") + (letter +str(4)))
                    worksheet.merge_range(row, head, merge_header)
                    print (row)

Когда я запускаю это и пытаюсь открыть документ, я получаю сообщение об ошибке: «Мы обнаружили проблему с некоторым содержимым в« Monthly Checks.xlsx ». Хотите, чтобы мы попытались восстановить столько, сколько мы можем? Если вы доверяете В источнике этой книги нажмите кнопку «Да».

Я нажимаю кнопку «Да», а затем получаю сообщение об ошибке при использовании файла, указывающего, что документ заблокирован для редактирования «другим пользователем». Если я выберу, чтобы уведомить человека, он откроет документ успешно с запиской о ремонте которые были сделаны.

Если я полностью удаляю циклы fr, документ открывается без ошибок.

1 Ответ

2 голосов
/ 28 января 2020

Вы получаете сообщение об ошибке, потому что первая строка for для l oop применяет 17 раз функцию merge_range к тому же диапазону ячеек (поскольку ваш список содержит столько элементов).

Это приводит к ошибке :

for letter in checkheads_letters:
    for head in other_checkheads:
        row = ((letter + str(2)) + (":") + (letter +str(4)))
        worksheet.merge_range(row, head, None)

enter image description here

Этот будет работать:

for letter in checkheads_letters:
    head = other_checkheads[checkheads_letters.index(letter)]
    row = ((letter + str(2)) + (":") + (letter +str(4)))
    worksheet.merge_range(row, head, None)

enter image description here

...