使用 Python 删除 excel 文件中的整行
Delete an entire row in an excel file using Python
我目前正在使用 work_sheet.delete_rows()
使用 openpyxl
模块,但它似乎只删除行中的值而不是实际行本身。
我怎样才能删除整行??
这是我当前正在访问的实际 Excel 数据..
现在这是删除行后的输出。该过程只删除每行的值而不是整行本身...
我猜你的调用方式有问题。虽然您说明了您使用的是什么,但您没有向我们提供您正在使用的实际 代码。
OpenPyXl
的实际 source code 表明它确实将被删除区域下方的行移动到该区域的开头。
您可以使用以下简单的电子表格实际看到这一点:
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')
运行 此脚本导致:
As loaded : <1, a> <3, b> <5, c> <7, d> <9, e>
After delete: <1, a> <9, e>
wb.save
行保存的版本符合预期:
A B
--+-------+-------+
1 | 1 | a |
5 | 9 | e |
您 可能 想要检查的一件事是您正在使用的 OpenPyXl
的版本,因为 [=17] 的各种迭代有几个错误报告=].我正在使用 3.0.3
版本(为了完整起见,Python 3.6.8
)。
我目前正在使用 work_sheet.delete_rows()
使用 openpyxl
模块,但它似乎只删除行中的值而不是实际行本身。
我怎样才能删除整行??
这是我当前正在访问的实际 Excel 数据..
现在这是删除行后的输出。该过程只删除每行的值而不是整行本身...
我猜你的调用方式有问题。虽然您说明了您使用的是什么,但您没有向我们提供您正在使用的实际 代码。
OpenPyXl
的实际 source code 表明它确实将被删除区域下方的行移动到该区域的开头。
您可以使用以下简单的电子表格实际看到这一点:
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')
运行 此脚本导致:
As loaded : <1, a> <3, b> <5, c> <7, d> <9, e>
After delete: <1, a> <9, e>
wb.save
行保存的版本符合预期:
A B
--+-------+-------+
1 | 1 | a |
5 | 9 | e |
您 可能 想要检查的一件事是您正在使用的 OpenPyXl
的版本,因为 [=17] 的各种迭代有几个错误报告=].我正在使用 3.0.3
版本(为了完整起见,Python 3.6.8
)。