Python在Excel电子表格中删除一行

我有一个非常大的ex​​cel文件,我需要删除大约20000行,只要满足一个简单的条件,excel不会让我删除这样一个复杂的范围,当使用filter。 条件是:

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

我试图自动化使用python和xlwt,但我不知道从哪里开始。 寻求一些代码snippits让我开始…感谢任何帮助,在那里!

不要删除。 只需复制你需要的东西。

  1. 读取原始文件
  2. 打开一个新文件
  3. 迭代原始文件的行(如果行的第一列不包含值X,则将此行添加到新文件中)
  4. closures这两个文件
  5. 将新文件重命名为原始文件

我喜欢使用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 

我通常loggingExcelmacros的片段,并将它们与Python粘在一起,因为我不喜欢Visual Basic :-D。

您可以尝试使用csv阅读器:

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

如果你只需要删除数据(而不是“摆脱”行,即它移动行),你可以尝试使用我的模块,PyWorkbooks。 你可以在这里得到最新的版本:

https://sourceforge.net/projects/pyworkbooks/

有一个pdf教程来指导你如何使用它。 快乐的编码!

您可以使用,

 sh.Range(sh.Cells(1,1),sh.Cells(20000,1)).EntireRow.Delete() 

将在打开的Excel电子表格中删除1到20,000行,

 if sh.Cells(1,1).Value == 'X': sh.Cells(1,1).EntireRow.Delete() 

我实现了使用pandas包….导入pandas作为PD

 #Read from Excel xl= pd.ExcelFile("test.xls") #Parsing Excel Sheet to DataFrame dfs = xl.parse(xl.sheet_names[0]) #Update DataFrame as per requirement #(Here Removing the row from DataFrame having blank value in "Name" column) dfs = dfs[dfs['Name'] != ''] #Updating the excel sheet with the updated DataFrame dfs.to_excel("test.xls",sheet_name='Sheet1',index=False)