如何使用`openpyxl`库在Excel中的合并单元格中写入?
Posted
技术标签:
【中文标题】如何使用`openpyxl`库在Excel中的合并单元格中写入?【英文标题】:How to write in merged cell in Excel using `openpyxl` library? 【发布时间】:2019-12-10 05:38:11 【问题描述】:我正在使用openpyxl
库在单独的单元格中写入现有的 Excel 文件。
如何在 Excel 合并单元格中写入一些文本?
错误 AttributeError: 'MergedCell' object attribute 'value' is read-only
当单元格合并时:
代码:
wb = openpyxl.load_workbook(filename=src)
for row in df_short.itertuples():
ws = wb[row.sheet]
try:
cell = 'N'+str(row.id)
ws[cell] = '=HYPERLINK("%s","#%s")' % (row.txt_path, row.txt)
【问题讨论】:
您可以尝试先取消合并单元格,然后设置值,然后将它们重新合并在一起? openpyxl.readthedocs.io/en/latest/… 或者,尝试引用单个顶部/最左侧的单元格,例如ws.cells(row=1, column=1).value = ...
(显然,替换为正确的行/列值)。
好主意!何提前检查特定单元格是否合并?
如果你总是写到顶部/左侧cell
,我认为你不需要费心检查它是否被合并。但是你可以在这里看到一些建议:***.com/questions/39574991/…
【参考方案1】:
使用以下代码,其中 ws 是工作表对象。
ws.cell(cells).value = 'Whatever you want it to be'
用合并块左上角的单元格替换单元格。我通常将其保留为行和列。所以 B1 将表示为 row = 1,column = 2。
值之后=
将任何字符串或整数放入单元格中。
【讨论】:
【参考方案2】:我有这个确切的错误和python3.5中conda环境的解决方案是
conda install -c conda-forge openpyxl=2.5.14 -y
同样适用于 pip3 环境:
pip3 install openpyxl==2.5.14 -y
【讨论】:
【参考方案3】:如果您愿意使用其他 excel 库,那么您的问题不会遇到 xlwings
让 Python 控制 excel。
Differences between xlwings vs openpyxl Reading Excel Workbooks。注意xlwings
需要在您的计算机上安装 Excel,而 openpyxl
不需要。
下面设置已经合并的单元格A1的值没有问题。
import xlwings as xw
wb = xw.Book('myproject.xlsm')
sh = wb.sheets[0]
sh.range('A1').value = 'hello'
结果:
【讨论】:
以上是关于如何使用`openpyxl`库在Excel中的合并单元格中写入?的主要内容,如果未能解决你的问题,请参考以下文章
Openpyxl:将单元格与 x y 合并。如何将 id 转换为 Excel 列字母?