本文介绍了使用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()
我在网上看到的所有东西都说,这是获得单个单元格价值的方法。我做错了什么?有没有更简单的方法?
谢谢...
推荐答案
除非您正在做比收集一些单元格更复杂的事情,否则numpy
或pandas
通常是不必要的开销。openpyxl
单独运行就足够好了。
您有两个循环访问工作表的选项,但您试图混合这两个选项,因此出现错误。
一种选择是使用带有row
和column
关键字参数的工作表对象的cell
方法简单地查询每个单元格的值。row
和column
索引是从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
对象的元组,而cell
的row
参数需要一个整数。
更新:我应该添加使用电子表格column:row
语法引用单元格的第三种方法,如下所示:
burndownData['B9'].value
但除非您只选择几个特定的单元格,否则在字母和数字之间来回转换似乎很笨拙。
这篇关于使用OpenPYXL获取单个单元格的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!