【问题标题】:get value of individual cell using openpyxl使用 openpyxl 获取单个单元格的值
【发布时间】:2021-07-28 03:55:06
【问题描述】:

我认为这将是一项非常简单的任务,但事实证明它比我想象的要复杂得多。尝试读取带有值表的简单 Excel 电子表格,然后对值执行计算并输出新工作表。

第一个问题是,人们推荐使用什么库?熊猫?打开pyxl?目前使用 openpyxl 并努力获取单个单元格的值。这是一些代码:

    collectionOrder = np.empty( [numRows,2], dtype='object')
numCountries = 0
for i in burndownData.iter_rows():
    elemnt = burndownData.cell(row=i,column=1)
    print("elemnt=",elemnt.value )
    if not( np.isnan(burndownData.cell(row=i,column=1).value)):
        collectionOrder[ int(burndownData.cell(row=i,column=1).value) ][0] = burndownData.cell(row=i,column=1).value
        collectionOrder[ int(burndownData.cell(row=i,column=1).value) ][1] = i
        numCountries = numCountries + 1

但当我第一次尝试使用单元格引用 (burndownData.cell(row=i,column=1)) 时,我收到以下错误:

Exception has occurred: TypeError '<' not supported between instances of 'tuple' and 'int' 
File "C:\Users\cpeddie\Documents\projects\generateBurndownReport.py", line 59, in run elemnt = 
burndownData.cell(row=i,column=1) File 
"C:\Users\cpeddie\Documents\projects\generateBurndownReport.py", line 96, in <module>
run()

我在网上看到的所有内容都表明这是获取单个单元格值的方法。我究竟做错了什么?有没有更简单的方法?

谢谢....

【问题讨论】:

  • 你为什么同时使用 .iter_rows() 和 .cell()?

标签: python excel pandas openpyxl


【解决方案1】:

除非您做的事情比收集单元格更复杂,否则numpypandas 通常是不必要的开销。 openpyxl 本身就足够了。

您有两个选项可用于遍历工作表,但您试图混合使用它们,因此会出现错误。

一个选项是使用带有rowcolumn 关键字参数的工作表对象的cell 方法简单地查询每个单元格的值。 rowcolumn 索引是从 1 开始的整数,如下所示:

burndownData.cell(row=1, column=1).value

另一个选项是迭代工作表并将行索引为列表:

for row in burndownData.iter_rows():
    elemnt = row[0].value

这将为您提供第 1 行的 A 列,第 2 行的 A 列,依此类推。 (因为它是 Python list 的索引,它是从零开始的)

你在上面做了什么:

for i in burndownData.iter_rows():
    elemnt = burndownData.cell(row=i,column=1)

产生错误,因为i 是openpyxl Cell 对象的元组,而cellrow 参数需要一个整数。

更新:我应该添加第三种使用电子表格column:row 语法引用单元格的方法,如下所示:

burndownData['B9'].value

但除非你只打算选择几个特定的​​单元格,否则在字母和数字之间来回翻译似乎很笨拙。

【讨论】:

  • 多么棒的解释!谢谢,我从我能找到的文档中根本没有得到这种区别。
  • 为了完整起见,我用第三种方法修改了我的答案,但听起来你有你需要的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-30
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-12
相关资源
最近更新 更多