我使用 python openpyxl 在 excel 中处理 for 循环
I use python openpyxl for working with for loop in excel
我有具有特殊结构的数据。数据分组如屏幕截图所示。
Data structure
使用 python,我确定了数据大纲级别,我想在新列中为每一行的单元格设置有关级别的信息,例如,column=8。
我用代码
import openpyxl as opx
wb=opx.load_workbook('./sources/example.xlsx')
print(wb.sheetnames)
ws=wb.active
print(ws.max_row)
for row_index, row in enumerate(ws.iter_rows(min_col=2, min_row=2, max_col=ws.max_column+1, max_row=ws.max_row+1)):
ws.cell(row=row_index,column=8).value=ws.row_dimensions[row_index].outline_level
print(row_index, ws.row_dimensions[row_index].outline_level)
wb.save('./sources/test.xlsx')
但是我得到了回溯
回溯(最后一次调用):
文件 "C:/Users/lisit/PycharmProjects/File_parsing/test_loop.py",第 11 行,位于
ws.cell(行=row_index,列=8).value=ws.row_dimensions[row_index].outline_level
文件 "C:\Users\lisit\Python\lib\site-packages\openpyxl\worksheet\worksheet.py",第 236 行,在单元格中
提高 ValueError("Row or column values must be at least 1")
ValueError:行或列值必须至少为 1
你能帮我解决一下吗?
问题
row_index 从 0 开始(枚举默认行为)
for row_index, row in enumerate(ws.iter_rows(min_col=2, min_row=2, max_col=ws.max_column+1, max_row=ws.max_row+1)):
两个修复选项
或者:使用 row_index + 1
ws.cell(row=row_index+1,column=8).value=ws.row_dimensions[row_index+1].outline_level
或者,将默认启动参数设置为 1,即 enumerate(..., start = 1)
for row_index, row in enumerate(ws.iter_rows(min_col=2, min_row=2, max_col=ws.max_column+1, max_row=ws.max_row+1), start = 1):
我有具有特殊结构的数据。数据分组如屏幕截图所示。 Data structure
使用 python,我确定了数据大纲级别,我想在新列中为每一行的单元格设置有关级别的信息,例如,column=8。 我用代码
import openpyxl as opx
wb=opx.load_workbook('./sources/example.xlsx')
print(wb.sheetnames)
ws=wb.active
print(ws.max_row)
for row_index, row in enumerate(ws.iter_rows(min_col=2, min_row=2, max_col=ws.max_column+1, max_row=ws.max_row+1)):
ws.cell(row=row_index,column=8).value=ws.row_dimensions[row_index].outline_level
print(row_index, ws.row_dimensions[row_index].outline_level)
wb.save('./sources/test.xlsx')
但是我得到了回溯
回溯(最后一次调用): 文件 "C:/Users/lisit/PycharmProjects/File_parsing/test_loop.py",第 11 行,位于 ws.cell(行=row_index,列=8).value=ws.row_dimensions[row_index].outline_level 文件 "C:\Users\lisit\Python\lib\site-packages\openpyxl\worksheet\worksheet.py",第 236 行,在单元格中 提高 ValueError("Row or column values must be at least 1") ValueError:行或列值必须至少为 1
你能帮我解决一下吗?
问题
row_index 从 0 开始(枚举默认行为)
for row_index, row in enumerate(ws.iter_rows(min_col=2, min_row=2, max_col=ws.max_column+1, max_row=ws.max_row+1)):
两个修复选项
或者:使用 row_index + 1
ws.cell(row=row_index+1,column=8).value=ws.row_dimensions[row_index+1].outline_level
或者,将默认启动参数设置为 1,即 enumerate(..., start = 1)
for row_index, row in enumerate(ws.iter_rows(min_col=2, min_row=2, max_col=ws.max_column+1, max_row=ws.max_row+1), start = 1):