【问题标题】:Using openpyxl to edit a spreadsheet. Cannot write to cells, "cell is read-only error"使用 openpyxl 编辑电子表格。无法写入单元格,“单元格是只读错误”
【发布时间】:2015-06-12 14:14:56
【问题描述】:

我正在尝试使用 Openpyxl 在 Python 中修改 excel 工作表,但我不断收到错误消息,提示单元格是只读的。我知道他们不是因为过去两个月我一直在手动编辑这些电子表格并且没有遇到任何问题。有谁知道可能会发生什么?我只是想了解如何使用 openpyxl 编辑工作表,所以它是基本代码。

rpt = file
workbook = openpyxl.load_workbook(filename = os.path.join('./Desktop/',rpt), use_iterators = True) # Tells which wb to open
wb=workbook
#worksheets = wb.get_sheet_names() 
ws = wb.active
ws['A1'] = 42

任何帮助将不胜感激。谢谢!

感谢您的回复,澄清一下,我没有收到工作簿是只读错误,它专门指的是单元格。我不确定是什么原因造成的,因为我知道该工作簿不是只读工作簿。我应该为 python 使用不同的 excel 库吗?有没有更健壮的excel库?

谢谢!

【问题讨论】:

标签: python excel openpyxl


【解决方案1】:

您正在以只读模式打开工作簿,这就是单元格为只读的原因。

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
  • @LawrenceAiello 从技术上讲,OP 只问“为什么会发生这种情况”,所以这是一个答案,即使这不是他们真正想要的问题的答案。
  • 问题的答案。 OP已从库的只读优化文档中复制并粘贴代码。
【解决方案2】:

如果任何其他绝望的灵魂正在寻找解决方案:

如答案here 中所述,如果您通过use_iterators = True,则返回的工作簿将是只读的。

在较新版本的 openpyxl 中,use_iterators 被重命名为 read_only,例如:

import openpyxl


rpt = file
workbook = openpyxl.load_workbook(filename = os.path.join('./Desktop/',rpt), read_only = True) # Tells which wb to open
wb=workbook
#worksheets = wb.get_sheet_names() 
ws = wb.active
ws['A1'] = 42

将产生:

TypeError: 'ReadOnlyWorksheet' object does not support item assignment

所以要进行修改,您应该使用read_only = False

【讨论】:

    猜你喜欢
    • 2016-07-15
    • 1970-01-01
    • 2017-12-23
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多