簡體   English   中英

Python刪除excel電子表格中的行

[英]Python to delete a row in excel spreadsheet

我有一個非常大的ex​​cel文件,我需要刪除大約20,000行,這取決於滿足一個簡單的條件和excel不會讓我刪除這樣一個復雜的范圍使用過濾器。 條件是:

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

我正在嘗試使用python和xlwt自動執行此操作,但我不確定從哪里開始。 尋求一些代碼snippits讓我開始...感謝那里的任何幫助!

不要刪除。 只需復制你需要的東西。

  1. 閱讀原始文件
  2. 打開一個新文件
  3. 迭代原始文件的行(如果行的第一列不包含值X,則將此行添加到新文件中)
  4. 關閉這兩個文件
  5. 將新文件重命名為原始文件

您可以嘗試使用csv閱讀器:

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

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM