Traceback (most recent call last): File "D:\Users\Lenovo\PycharmProjects\pythonProject\1123.py", line 264, in <module> movedata() File "D:\Users\Lenovo\PycharmProjects\pythonProject\1123.py", line 254, in movedata min_value = min(sheet.cell(row=start_row, column=2).value, sheet.cell(row=end_row, column=2).value) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\workspace\PyCharm\Lib\site-packages\openpyxl\worksheet\worksheet.py", line 242, in cell [[6, 29]] if row < 1 or column < 1: ^^^^^^^ TypeError: '<' not supported between instances of 'str' and 'int'
时间: 2023-08-05 20:07:11 浏览: 102
根据错误提示,`sheet.cell()` 方法中的 `row` 和 `column` 参数需要是整数类型,而你传递的可能是字符串类型。
请确保 `start_row` 和 `end_row` 的值是整数类型。如果它们是字符串类型,可以使用 `int()` 函数将其转换为整数。以下是更新后的示例代码:
```python
import openpyxl
# 打开Excel文件
wb = openpyxl.load_workbook('filename.xlsx')
# 选择特定的sheet页
sheet = wb['3001权限匹配规则维护']
# 嵌套列表信息
replace_info = [[11, 13], [15, 19], [21, 25], [27, 30]] # 示例,可以根据实际情况修改
# 遍历replace_info中的每个列表
for row_nums in replace_info:
start_row, end_row = row_nums
# 获取较小的值
min_value = min(sheet.cell(row=int(start_row), column=2).value, sheet.cell(row=int(end_row), column=2).value)
# 将较小的值-1替换到对应行数的报文发送列中
for row_num in range(int(start_row), int(end_row) + 1):
sheet.cell(row=row_num, column=2).value = min_value - 1
# 保存修改后的Excel文件
wb.save('filename.xlsx')
```
在上述代码中,我们使用 `int()` 函数将 `start_row` 和 `end_row` 的值转换为整数类型,以确保传递给 `sheet.cell()` 方法的参数是整数类型。
请确保根据实际情况修改文件名、sheet页名称以及嵌套列表中的范围。同时,确保已安装 `openpyxl` 库,可以使用 `pip install openpyxl` 进行安装。
阅读全文