我尝试使用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工作簿。
答案 0 :(得分:0)
这是您应该使用Excel表示法的示例。
for (a, b) in currentSheet.iter_rows(max_col=2):
if a.value is None:
print(b.value)
应该工作
答案 1 :(得分:-1)
我实际上想出了一种不同的做法!
以下是我未来可能偶然发现的任何人的代码:
for r in range(1, currentSheet.max_row):
cell = currentSheet.cell(row=r, column=12)
if cell.value is None:
data = currentSheet.cell(row=r, column=2)
print(data.value)
基本上我正在做的是检查列L(12)是否为空,如果是,我需要在同一行但在B(2)列中打印该值。显然,印刷可以用其他任何东西改变(返回或其他东西)。