【问题标题】:How to write in merged cell in Excel using `openpyxl` library?如何使用`openpyxl`库在Excel中的合并单元格中写入?
【发布时间】: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,我认为你不需要费心检查它是否被合并。但是你可以在这里看到一些建议:stackoverflow.com/questions/39574991/…

标签: python excel pandas for-loop openpyxl


【解决方案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'
      

      结果:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-14
        • 1970-01-01
        • 1970-01-01
        • 2019-07-08
        • 1970-01-01
        • 2019-05-20
        • 2021-03-05
        • 1970-01-01
        相关资源
        最近更新 更多