Файлы Excel не могут быть открыты - PullRequest
0 голосов
/ 05 марта 2019

У меня есть исходный файл Excel в исходной папке (*.xlsm) и другой файл (также *.xlsm), который содержит некоторые данные.Я должен создать третий файл, который должен быть *.xls, который в основном является исходным файлом Excel, который содержит некоторые данные второго файла.Для этого я написал следующий код:

from openpyxl import load_workbook

file1 = "C:\\Users\Desktop\file1.xlsm"
file2 = "C:\\Users\Desktop\file2.xlsm"
file3 = "C:\\Users\Desktop\file3.xls"

wb1 = load_workbook(file1)
sheet1 = wb1["Sheet1"]

wb2 = load_workbook(file2)
sheet2 = wb2["Sheet1"]

sheet1["A1"].value = sheet2["A1"].value

wb1.save(file3)

Код выглядит нормально и не возвращает ошибок, но я не могу открыть созданный file3.

* 1009.*image

Я не понимаю, почему, я пытался изменить расширение третьего файла, но и *.xlsx, и *.xlsm показывают эту проблему.Я также попытался удалить часть строки

sheet1["A1"].value = sheet2["A1"].value

Чтобы понять, была ли проблема связана с написанием листа, но проблема остается.

Ответы [ 2 ]

0 голосов
/ 20 августа 2019

Одной ошибкой может быть то, что переменные filepath требуют экранирования Юникода для \

Таким образом: правильная версия будет

file1 = "C:\\Users\\Desktop\\file1.xlsm" file2 = "C:\\Users\\Desktop\\file2.xlsm" file3 = "C:\\Users\\Desktop\\file3.xls"

0 голосов
/ 05 марта 2019

Прежде всего, пожалуйста, обратите внимание, что ваш код не создает новый файл, а просто восстанавливает существующий.

Также не ясно, что вы хотите: вы хотите создать file3?С какой информацией?Ваш код ничего этого не делает.

Однако я попытался запустить короткую версию вашего кода и получил ошибку:

openpyxl.utils.exceptions.InvalidFileException: openpyxlне поддерживает формат файла .xlsm ', пожалуйста, убедитесь, что вы можете открыть его в Excel.Поддерживаемые форматы: .xlsx, .xlsm, .xltx, .xltm

Скорее всего, ваш формат файла не поддерживается.Попробуйте сохранить ваши файлы в формате xlsx.Я думаю, что проблема в макросах: если у вас их нет в файлах, то изменение формата не должно быть проблемой.Если у вас есть, я не уверен, что openpyxl будет работать таким образом (по крайней мере, без обходного пути).

Этот ответ может помочь.Он предлагает извлечь файлы xlms (это zip-файлы), поработать над теми, которые представляют формат вашего листа (не макрос), а затем снова собрать все вместе.

...