2

我正在使用 python-excel 模块进行一些测试。我似乎找不到使用这些模块删除 Excel 工作表中的一行的方法,而且互联网也没有提供解决方案。有没有办法使用 python-excel 模块之一删除一行?

就我而言,我想打开一个excel表,读取第一行,确定它是否包含一些有效数据,如果没有,则将其删除。

欢迎任何建议。

4

3 回答 3

2

xlwt 提供了模块名称所暗示的 Excel 编写器(创建而不是修改)功能。另一方面,xlrd 提供 Excel 阅读器功能。

如果您的源 excel 文件相当简单(没有花哨的图表、数据透视表等),您应该这样做:

使用 xlrd 模块读取目标 excel 文件的内容,然后使用 xlwt 模块创建包含必要行的新 excel 文件。

但是,如果您在 Windows 平台上运行此程序,则可以直接通过 Microsoft COM 对象操作 Excel,请参阅旧书参考

于 2012-04-26T19:07:12.597 回答
2

我遇到了同样的问题,但发现了一个四处走走:

  1. 使用自定义过滤器过程(Reader>Filter1>Filter2>...>Writer)生成源 excel 文件的副本,但在前面插入一个空白列。我们称这个文件为 augmented.xls

  2. 然后,rb使用 xlrd.open_workbook() 将 augmented.xls 读入 xlrd.Workbook 对象。

  3. 使用 xlutils.copy.copy() 转换rb为 xlwt.Workbook 对象,wb.

  4. 将每个待删除行的第一列的值设置为“x”(或其他值作为标记)wb

  5. 保存wbaugmented.xls

  6. 使用另一个自定义过滤器过程从augmented.xls生成结果 excel 文件,方法是省略第一列中带有“x”的行并将所有列向左移动一列(相当于删除第一列标记)。

定义过滤过程的信息和示例可以在http://www.simplistix.co.uk/presentations/python-excel.pdf中找到

希望这在某种程度上有所帮助。

于 2014-09-04T17:35:11.133 回答
0

你可以使用图书馆openpyxl。打开文件时,它既可以用于读取,也可以用于写入。然后,通过一个简单的功能,您可以实现:

from openpyxl import load_workbook

wb = load_workbook(filename)

ws = wb.active()

first_row = ws[1]

# Your code here using first_row

if first_row not valid:
    ws.delete_rows(1, amount=1)
于 2018-11-21T08:48:23.730 回答