Можно ли объединить ячейки с рабочим листом openpyxl только для записи? - PullRequest
0 голосов
/ 08 марта 2020

Я создаю рабочие листы с приблизительно 100 000 строк, и операция записи openpyxl довольно медленная. Было бы полезно получить объект строки и заполнить его, но я не могу найти API для этого. В документации по оптимизации упоминается только режим записи. Моя проблема с этим режимом заключается в том, что он явно не поддерживает объединенные ячейки, поскольку объединение ячеек, по-видимому, является операцией, выполняемой в электронной таблице, а не в добавляемой строке.

from openpyxl import Workbook
from openpyxl.cell import WriteOnlyCell
from openpyxl.comments import Comment
from openpyxl.styles import Font
wb = Workbook(write_only = True)
ws = wb.create_sheet()
cell = WriteOnlyCell(ws, value="hello world")
cell.font = Font(name='Courier', size=36)
cell.comment = Comment(text="A comment", author="Author's Name")
ws.append([cell, 3.14, "foo","bar",None])
ws.append(["merged cells"])
ws.merge_cells(start_row=2,end_row=2,start_column=1,end_column=5)
wb.save('write_only_file.xlsx')
% python cm.py
Traceback (most recent call last):
  File "cm.py", line 12, in <module>
    ws.merge_cells(start_row=2,end_row=2,start_column=1,end_column=5)
AttributeError: 'WriteOnlyWorksheet' object has no attribute 'merge_cells'

Есть ли способ поддержать объединение ячеек? В противном случае, что может быть быстрее для записи ячеек, чем получить каждую ячейку с помощью ws.cell() и установить ее вручную?

1 Ответ

1 голос
/ 14 марта 2020

Нет, в режиме только для записи невозможно указать, будут ли объединены ячейки.

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

...