Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用openpyxl删除excel中的第一行_Python_Excel_Python 3.x - Fatal编程技术网

Python 如何使用openpyxl删除excel中的第一行

Python 如何使用openpyxl删除excel中的第一行,python,excel,python-3.x,Python,Excel,Python 3.x,我有一个excel文件,我正在尝试读取第一行并将其传递给另一个函数,然后从excel中删除第一行并保存它,直到excel文件中的所有行都用完为止 我尝试使用openpyxl,第一次尝试时我可以删除第一行,但是当我再次尝试读取excel文件时,它给了我这个异常 openpyxl.utils.exceptions.CellCoordinatesException: There is no row 0 (A0) 这是我的密码 import openpyxl filename = "example.

我有一个excel文件,我正在尝试读取第一行并将其传递给另一个函数,然后从excel中删除第一行并保存它,直到excel文件中的所有行都用完为止

我尝试使用openpyxl,第一次尝试时我可以删除第一行,但是当我再次尝试读取excel文件时,它给了我这个异常

openpyxl.utils.exceptions.CellCoordinatesException: There is no row 0 (A0)
这是我的密码

import openpyxl

filename = "example.xlsx"
wb = openpyxl.load_workbook(filename)
sheet = wb['Sheet1']
status = sheet['A1'].value
print(status)
sheet.delete_rows(0, 1)
wb.save(filename)

一旦使用
delete\u rows(beg\u row,end\u row)
删除了行,它们的索引也将被删除,这意味着不再存在索引为
0
的行。

未测试的,但下面的调整应该会修复它。您不用读取
'A1'
并删除行
0
,而是使用
min\u row
查找第一个非空行,然后读取并删除该行

import openpyxl

filename = "example.xlsx"
wb = openpyxl.load_workbook(filename)
sheet = wb['Sheet1']
status = sheet.cell(sheet.min_row, 1).value
print(status)
sheet.delete_rows(sheet.min_row, 1)
wb.save(filename)


“我正在尝试读取第一行并将其传递给另一个函数”,您的意思是将您从该行读取的数据传递给另一个函数,对吗?是的,没错我尝试了这个,它按预期删除了行,但当它到达最后一行时,在删除它后,它仍然将最后一行附加到excel文件并再次读取,我希望它也会删除最后一行,并以空文件结束。为此,我找到了一个解决办法,让它检查第一行是否等于最后一行,使用最后一行数据并退出。@Sherlockholms我会建议同样的调整。我从未遇到过类似的问题,所以我不知道您不能删除最后一行并将工作表清空。你介意用你的答案编辑我的答案吗?它将对任何其他用户有用,他们将带着同样的信息到达这里problem@sherlockholmes此外,作为一个(小的)性能改进,您可能希望只读取一次
min\u row
max\u row
,为其创建一个静态变量,并使用计数器增加
min\u row
。只有在没有空行的情况下,这才有效