[英]Python to delete a row in excel spreadsheet
我有一個非常大的excel文件,我需要刪除大約20,000行,這取決於滿足一個簡單的條件和excel不會讓我刪除這樣一個復雜的范圍使用過濾器。 條件是:
如果第一列包含值X,那么我需要能夠刪除整行。
我正在嘗試使用python和xlwt自動執行此操作,但我不確定從哪里開始。 尋求一些代碼snippits讓我開始...感謝那里的任何幫助!
不要刪除。 只需復制你需要的東西。
您可以嘗試使用csv閱讀器:
我喜歡使用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。
您可以使用,
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()
如果你只需要刪除數據(而不是'擺脫'行,即它會移動行),你可以嘗試使用我的模塊PyWorkbooks。 您可以在此處獲取最新版本:
https://sourceforge.net/projects/pyworkbooks/
有一個pdf教程,指導您如何使用它。 快樂的編碼!
我用Pandas包來實現這一目標....
import pandas as 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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.