用Python删除Excel表格中的一行

6 投票
6 回答
55353 浏览
提问于 2025-04-16 15:34

我有一个非常大的Excel文件,我需要删除大约20,000行,这些行的删除要满足一个简单的条件,但Excel在使用筛选时不允许我删除这么复杂的范围。这个条件是:

如果第一列包含值X,那么我需要删除整行。

我想用Python和xlwt来自动化这个过程,但我不知道从哪里开始。希望能得到一些代码片段来帮助我入门……非常感谢任何能提供帮助的人!

6 个回答

2

你可以试试使用csv读取器:

http://docs.python.org/library/csv.html

4

我喜欢用COM对象来做这种有趣的事情:

import win32com.client
from win32com.client import constants

f = r"h:\Python\Examples\test.xls"
DELETE_THIS = "X"

exc = win32com.client.gencache.EnsureDispatch("Excel.Application")
exc.Visible = 1
exc.Workbooks.Open(Filename=f)

row = 1
while True:
    exc.Range("B%d" % row).Select()
    data = exc.ActiveCell.FormulaR1C1
    exc.Range("A%d" % row).Select()
    condition = exc.ActiveCell.FormulaR1C1

    if data == '':
        break
    elif condition == DELETE_THIS:
        exc.Rows("%d:%d" % (row, row)).Select()
        exc.Selection.Delete(Shift=constants.xlUp)
    else:
        row += 1

# Before
# 
#      a
#      b
# X    c
#      d
#      e
# X    d
#      g
#        

# After
#
#      a
#      b
#      d
#      e
#      g

我通常会录制一些Excel宏的小片段,然后用Python把它们拼在一起,因为我不太喜欢Visual Basic :-D。

13

别删掉。只需复制你需要的部分。

  1. 读取原始文件
  2. 打开一个新文件
  3. 逐行检查原始文件(如果这一行的第一列不包含值X,就把这一行添加到新文件里)
  4. 关闭两个文件
  5. 把新文件重命名为原始文件的名字

撰写回答