是否可以将单元格与 openpyxl 只写工作表合并?

Is it possible to merge cells with an openpyxl write-only worksheet?

我正在创建大约 100,000 行的工作表,openpyxl 的写入操作非常慢。获取行对象并填充它会很有用,但我找不到 API 。 documentation on optimization 提到了只写模式。我对这种模式的问题是它显然不支持合并单元格,因为合并单元格似乎是在电子表格上完成的操作,而不是在附加的行上完成的。

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() 获取每个单元格并手动设置它更快的写入单元格的方法?

不,在只写模式下无法指定是否合并单元格。

有关合并单元格的信息位于工作表的 end 并且 API 目前不支持此功能,尽管可能可以添加执行此操作的代码。

摆弄工作表的 merged_cells 属性对我有用。这是一个例子:

from openpyxl.workbook import Workbook

wb = Workbook(write_only=True)
ws = wb.create_sheet("Test")

ws.append(['A', '', '', '', '', 'B', '', '', '', ''])

for _ in range(100):
    ws.append(['%d' % i for i in range(10)])

ws.merged_cells.ranges.append("A1:E1")
ws.merged_cells.ranges.append("F1:J1")

wb.save("Test.xlsx")