Не могу записать в файл Excel, который содержит объединенные ячейки, используя openpyxl в Python - PullRequest
0 голосов
/ 26 сентября 2019

TLDR: Я не могу записать фрейм данных на лист Excel, в котором уже есть объединенные ячейки, после чтения его как рабочей книги с openpyxl.

Мне нужно записать всуществующий лист Excel для заполнения формы.Форма предварительно отформатирована, поэтому я использовал openpyxl open_workbook, чтобы открыть ее как рабочую книгу.Затем заполнение формы выполняется с помощью информационных кадров pandas.Однако любые объединенные ячейки в листе Excel не позволяют мне писать в него.

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

Это был потокчто я использовал для сохранения форматирования при записи в листы Excel: Как записать в существующий файл Excel без перезаписи данных (используя панды)?

Просто для демонстрационных целей в этой теме, пустойЛист Excel с одной парой слитых ячеек достаточно.Приведенный ниже код читает файл как рабочую книгу, затем читает его как информационный кадр и пытается записать его обратно.

import pandas as pd
import openpyxl

df = pd.read_excel('example.xlsx')
wb = openpyxl.load_workbook('example.xlsx')

writer = pd.ExcelWriter('example2.xlsx', engine='openpyxl')
writer.book = wb
writer.sheets = dict((ws.title, ws) for ws in wb.worksheets)

df.to_excel(writer)

Выдает эту ошибку:

Traceback (most recent call last):
  File "/Users/nathan/Desktop/test.py", line 18, in <module>
    df.to_excel(writer)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pandas/core/generic.py", line 2127, in to_excel
    engine=engine)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pandas/io/formats/excel.py", line 662, in write
    freeze_panes=freeze_panes)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pandas/io/excel.py", line 1605, in write_cells
    xcell.value, fmt = self._value_with_fmt(cell.val)
AttributeError: 'MergedCell' object attribute 'value' is read-only
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...