Как добавить данные в существующий файл xlsm, используя editpyxl? - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь добавить данные в одну ячейку в существующем файле xlsm, а затем сохранить его как новый файл xlsm с помощью editpyxl, но получаю сообщение об ошибке, указывающее, что ячейка не существует (IndexError: Ячейка A1 на TestSheet1 не существует) , На сайте editpyxl не так много документации, но приведенный пример кода показывает, как редактировать книгу. Вот что у меня есть (что в основном совпадает с примером на сайте):

from editpyxl import Workbook

wb = Workbook()
wb.open('C:/Test/original.xlsm')
ws = wb['TestSheet1']
print(wb.sheetnames)
ws.cell('A1').value = 'abc123'
wb.save('C:/Test/newfile.xlsm')

Вот полная ошибка:

Excel file does not contain xl/sharedStrings.xml
['TestSheet1', 'TestSheet2', 'TestSheet3']
Traceback (most recent call last):
  File "C:\Test\editxlsm-ep.py", line 7, in <module>
    ws.cell('A1').value = 'abc123'
  File "C:\Users\xxxxxx\AppData\Local\Programs\Python\Python38\lib\site- 
    packages\editpyxl\worksheet.py", line 64, in cell
    raise IndexError('Cell {0} on {1} does not exist'.format(coordinate, self.name))
IndexError: Cell A1 on TestSheet1 does not exist

Я пробовал это с файлом xlsx просто чтобы посмотреть, была ли проблема в xlsm, но получило то же сообщение об ошибке. Я также добавил строку печати, чтобы убедиться, что он может правильно загрузить файл. Похоже, что это происходит, так как имена трех листов печатаются до возникновения ошибки. Я искал больше помощи с библиотекой editpyxl, но не смог найти много. Версии того, что я использую: Excel - 2016, editpyxl - 0.1.9, python - 3.8.1. Спасибо.

1 Ответ

0 голосов
/ 30 апреля 2020

Итак, я смог выяснить, почему editpyxl выдавал ошибку, что ячейка не существует. Пока ячейка не содержит данных, я получаю ошибку. После того, как я добавил некоторые другие данные в «A1» (я только добавил «x»), он запускается без ошибок, и «x» заменяется желаемым значением. Все мои макросы и кнопки управления остаются неизменными и в новом файле xlsm.

...