使用OpenPYXL获取单个单元格的值 [英] get value of individual cell using openpyxl

查看:0
本文介绍了使用OpenPYXL获取单个单元格的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

第一个问题是,人们推荐使用什么库? pandas ?Openpyxl?目前使用的是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

但是,当我第一次尝试并使用单元格引用(burndown Data.cell(row=i,Column=1))时,我得到以下错误:

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

我在网上看到的所有东西都说,这是获得单个单元格价值的方法。我做错了什么?有没有更简单的方法?

谢谢...

推荐答案

除非您正在做比收集一些单元格更复杂的事情,否则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是OpenpyxlCell对象的元组,而cellrow参数需要一个整数。

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

burndownData['B9'].value

但除非您只选择几个特定的单元格,否则在字母和数字之间来回转换似乎很笨拙。

这篇关于使用OpenPYXL获取单个单元格的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆