【发布时间】:2018-05-25 20:33:42
【问题描述】:
我正在尝试使用 openpyxl 遍历 Excel 电子表格中的行。 我要做的是检查当前行的 A 列中的单元格是否为空,如果是,我需要在同一行上打印 B 列中的数据。 到目前为止,这是我的代码:
wb = openpyxl.load_workbook('worksheet.xlsx')
wb.active = 1 #Change the active sheet.
sheets = wb.sheetnames #The sheets.
currentSheet = wb[sheets[n]] #Chooses the current sheet from the workbook.
for row in currentSheet.iter_rows('A{}:A{}'.format(currentSheet.min_row, currentSheet.max_row)):
for cell in row:
if not cell.value:
print(currentSheet['B''row'].value)
当我运行它时,我得到以下输出:
File "main.py", line 69, in get_callout
print(currentSheet['B''row'].value)
File "C:\Users\~\AppData\Local\Continuum\anaconda3\lib\site-packages\ope
pyxl\worksheet\worksheet.py", line 357, in __getitem__
min_col, min_row, max_col, max_row = range_boundaries(key)
File "C:\Users\~\AppData\Local\Continuum\anaconda3\lib\site-packages\ope
pyxl\utils\cell.py", line 135, in range_boundaries
raise ValueError("{0} is not a valid coordinate or range")
ValueError: {0} is not a valid coordinate or range
任何帮助将不胜感激!
编辑 我忘了提到我也在使用 openpyxl 2.4.9,因为 2.5.3(当前版本)不会让我打开我需要使用的 Excel 工作簿。
【问题讨论】:
-
'row' 应该是
row变量吗?并与字符串 'B' 连接,例如'B'+row? -
如果您在 print 语句中谈论“行”,那么是的,那就是
row变量。我刚刚尝试通过print(currentSheet['B'+row].value)将其连接起来,但这也不起作用,但我认为你走在正确的轨道上。 -
print("{}{}".format('B', row)) -
这样做会打印出以下内容:
B(<Cell 'SHEET 1'.A1>,)每一行。
标签: python excel loops openpyxl worksheet