使用Python删除excel文件中的整行

使用Python删除excel文件中的整行,python,excel,openpyxl,Python,Excel,Openpyxl,我目前正在使用工作表。使用openpyxl模块删除行(),但它似乎只删除行中的值,而不是实际行本身。。 如何删除整行 这是我当前正在访问的实际Excel数据。 这是删除行后的输出。。该过程仅删除每行的值,而不是整行本身… 我猜你的称呼方式有问题。虽然你已经说明了你在使用什么,但是你没有给我们你正在使用的实际代码 OpenPyXl的实际值表明,它确实将要删除的区域下方的行移动到该区域的开头 通过使用以下简单的电子表格,您实际上可以看到这一点: A B --+-------

我目前正在使用
工作表。使用
openpyxl
模块删除行()
,但它似乎只删除行中的值,而不是实际行本身。。 如何删除整行

这是我当前正在访问的实际Excel数据。

这是删除行后的输出。。该过程仅删除每行的值,而不是整行本身…


我猜你的称呼方式有问题。虽然你已经说明了你在使用什么,但是你没有给我们你正在使用的实际代码

OpenPyXl的实际值表明,它确实将要删除的区域下方的行移动到该区域的开头

通过使用以下简单的电子表格,您实际上可以看到这一点:

      A       B
--+-------+-------+
1 |   1   |   a   |
2 |   3   |   b   |
3 |   5   |   c   |
4 |   7   |   d   |
5 |   9   |   e   |
以下脚本显示删除第二行、第三行和第四行:

import openpyxl

def dumpWs(desc, ws):
    print(f'{desc}: ', end = '')
    for row in ws.values:
        print(end = '<')
        sep = ''
        for value in row:
            print(f'{sep}{value}', end = '')
            sep = ', '
        print(end = '> ')
    print()

wb = openpyxl.load_workbook('version1.xlsx')
ws = wb.active
dumpWs('As loaded   ', ws)

ws.delete_rows(2, 3)
dumpWs('After delete', ws)

wb.save('version2.xlsx')


您可能需要检查您正在使用的
OpenPyXl
版本,因为在
delete\u行的不同迭代中有几个bug报告。我使用的是版本
3.0.3
(为了完整起见,使用Python
3.6.8

我猜您的调用方式有问题。虽然你已经说明了你在使用什么,但是你没有给我们你正在使用的实际代码

OpenPyXl
的实际值表明,它确实将要删除的区域下方的行移动到该区域的开头

通过使用以下简单的电子表格,您实际上可以看到这一点:

      A       B
--+-------+-------+
1 |   1   |   a   |
2 |   3   |   b   |
3 |   5   |   c   |
4 |   7   |   d   |
5 |   9   |   e   |
以下脚本显示删除第二行、第三行和第四行:

import openpyxl

def dumpWs(desc, ws):
    print(f'{desc}: ', end = '')
    for row in ws.values:
        print(end = '<')
        sep = ''
        for value in row:
            print(f'{sep}{value}', end = '')
            sep = ', '
        print(end = '> ')
    print()

wb = openpyxl.load_workbook('version1.xlsx')
ws = wb.active
dumpWs('As loaded   ', ws)

ws.delete_rows(2, 3)
dumpWs('After delete', ws)

wb.save('version2.xlsx')


您可能需要检查您正在使用的
OpenPyXl
版本,因为在
delete\u行的不同迭代中有几个bug报告。我使用的是版本
3.0.3
(为了完整起见,使用Python
3.6.8

所以它实际上删除了行而不仅仅是值?但我还是已经拿到了,谢谢你的回复。。我想指出的是,excel文件中的值确实被删除了,但行却没有。。所以每次我在excel文件的行中循环时,循环仍然会对行进行计数,但值已经被删除了…@IAmArien:你是如何迭代这些行的?您可以从我的代码中看到,它正在对删除后的行计数进行新的评估,在ws.values中对行使用
。如果您的代码以某种方式记住了上一行的计数,那么这就可以解释这种不一致性。如果你想问一个新的问题,显示你实际使用的代码,我会提供一些进一步的帮助…感谢@paxdiablo。。。我编辑了我的问题,以进一步澄清我试图指出的内容。。你能帮我吗?此外,excel文件必须在同一个excel文件中,我们可以将其保存在另一个版本中,如您在回答中所述,但在我的代码中,我必须使用并保存到同一个excel文件中。。。感谢您的考虑。那么它实际上删除了行而不仅仅是值?但我还是已经拿到了,谢谢你的回复。。我想指出的是,excel文件中的值确实被删除了,但行却没有。。所以每次我在excel文件的行中循环时,循环仍然会对行进行计数,但值已经被删除了…@IAmArien:你是如何迭代这些行的?您可以从我的代码中看到,它正在对删除后的行计数进行新的评估,在ws.values中对行使用
。如果您的代码以某种方式记住了上一行的计数,那么这就可以解释这种不一致性。如果你想问一个新的问题,显示你实际使用的代码,我会提供一些进一步的帮助…感谢@paxdiablo。。。我编辑了我的问题,以进一步澄清我试图指出的内容。。你能帮我吗?此外,excel文件必须在同一个excel文件中,我们可以将其保存在另一个版本中,如您在回答中所述,但在我的代码中,我必须使用并保存到同一个excel文件中。。。谢谢考虑。