【发布时间】:2014-09-11 05:19:31
【问题描述】:
我需要删除一个简单直接的 Excel 文件中的一些行。
例如,删除B列不为空的行。
我能想到的并不是真正的“删除”方式,而是重命名一个新创建的文件:
import os
import xlwt
from xlrd import open_workbook
old_file = open_workbook('C:\\file.xls',formatting_info=True)
old_sheet = old_file.sheet_by_index(0)
new_file = xlwt.Workbook(encoding='utf-8', style_compression = 0)
new_sheet = new_file.add_sheet('Sheet1', cell_overwrite_ok = True)
contents = []
for row in range(old_sheet.nrows):
a = old_sheet.cell(row,0).value
b = old_sheet.cell(row,1).value
if len(b) < 1:
contents.append(a)
for c, content in enumerate(contents):
new_sheet.write(c, 0, content)
new_file.save('C:\\file_1.xls')
os.remove('C:\\file.xls')
os.rename('C:\\file_1.xls', 'C:\\file.xls')
好吧,这并不是真正删除行,但无论如何它可能是一种合适的方式。
有什么更好的方法可以做到这一点,比如考虑更多的条件?
【问题讨论】:
-
你做对了。看到这个线程Python to delete a row in excel spreadsheet
-
最终,这就是 Excel 本身所做的。没有“就地”“修改”文件之类的。这只是 Excel 用户界面造成的一种错觉。如果您在 Excel 中进行更改,然后按 Ctrl+S,它所做的就是删除旧文件,将其替换为具有相同名称的全新文件。