Python在Excel电子表格中删除一行
我有一个非常大的excel文件,我需要删除大约20000行,只要满足一个简单的条件,excel不会让我删除这样一个复杂的范围,当使用filter。 条件是:
如果第一列包含值X,那么我需要能够删除整个行。
我试图自动化使用python和xlwt,但我不知道从哪里开始。 寻求一些代码snippits让我开始…感谢任何帮助,在那里!
不要删除。 只需复制你需要的东西。
- 读取原始文件
- 打开一个新文件
- 迭代原始文件的行(如果行的第一列不包含值X,则将此行添加到新文件中)
- closures这两个文件
- 将新文件重命名为原始文件
我喜欢使用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阅读器:
如果你只需要删除数据(而不是“摆脱”行,即它移动行),你可以尝试使用我的模块,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)