我正在尝试使用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库?
谢谢!
答案 0 :(得分:1)
您正在以只读模式打开工作簿,这就是单元格是只读的原因。
答案 1 :(得分:0)
万一其他绝望的灵魂正在寻找解决方案:
如答案 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
。