用Python删除Excel表格中的一行
我有一个非常大的Excel文件,我需要删除大约20,000行,这些行的删除要满足一个简单的条件,但Excel在使用筛选时不允许我删除这么复杂的范围。这个条件是:
如果第一列包含值X,那么我需要删除整行。
我想用Python和xlwt来自动化这个过程,但我不知道从哪里开始。希望能得到一些代码片段来帮助我入门……非常感谢任何能提供帮助的人!
6 个回答
2
你可以试试使用csv读取器:
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
别删掉。只需复制你需要的部分。
- 读取原始文件
- 打开一个新文件
- 逐行检查原始文件(如果这一行的第一列不包含值X,就把这一行添加到新文件里)
- 关闭两个文件
- 把新文件重命名为原始文件的名字