我正在处理来自两台计算机的一段代码。我使用openpyxl从Excel工作表中读取数据,并使用load_workbook
关键字参数data_only=True
和use_iterators=True
。根据我使用的计算机,我需要使用cell.value
或cell.internal_value
。为什么会这样?
这里是阅读:
raw_rows = []
for row in openpyxl_sheet.iter_rows():
# raw_rows.append([cell.internal_value for cell in row])
raw_rows.append([cell.value for cell in row])
return raw_rows
作为一种临时解决方法,我已经在第3和第4行之间进行了交换。
在一台计算机上,cell.value
向我提供了单元格数据,cell.internal_value
会抛出以下属性错误:
AttributeError: 'RawCell' object has no attribute 'value'
在另一台计算机上,cell.value
和cell.internal_value
都会向我提供数据,但只有cell.internal_value
才能提供正确的数据。
从我在阅读网站上的其他问题时可以看出,我应该使用cell.internal_value
。我已经使用Anaconda在两台计算机上安装openpyxl。
答案 0 :(得分:0)
我在每台计算机上使用不同版本的openpyxl。我以为他们是相同的,因为我使用Anaconda安装每个。这些问题已通过conda update openpyxl
修复。更新后,使用cell.value
适用于两者。
我会留下这个问题,以防其他用户可以识别出一个不会假设您能够更改openpyxl版本的解决方案。