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