2016-02-11 547 views
2

嗨使用openpyxl模塊格式化電子表格。我試圖加入列A和B的每行「,」並刪除列B的數字中的「 - 」。 我也試圖刪除列中有「無」的任何行。我有第一部分,但我無法刪除「無」和整個行。下面你會看到我的代碼,然後是我期望實現的前後。我將非常感謝您的幫助,因爲我仍然是Python的noobie。Python Openpyxl ...刪除具有特定單詞的行

**Code** 

import openpyxl 

wb = openpyxl.load_workbook('Users.xlsx') 

sheet = wb.get_active_sheet() 

for rows in sheet['A3':'B11']: 
    try: 
     print(rows[0].value + "," + rows[1].value.replace("-","")) 
    # TODO: remove rows with the word "None" 
    except: 
     if rows == "None": 
      rows[0].value.delete 
      continue 

**Before** 

b0119xxx None 
b0105xxx 534-0498 
c0215xxx 534-0498 
c0245xxx None 
d0232xxx 534-0498 
d0263xxx 534-0498 
d0190xxx 534-0498 
d0085xxx None 
g0009xxx 534-0498 
g0169xxx 534-0498 
g0221xxx 534-0498 

**After** 

b0105xxx,5340498 
c0215xxx,5340498 
d0232xxx,5340498 
d0263xxx,5340498 
d0190xxx,5340498 
g0009xxx,5340498 
g0169xxx,5340498 
g0221xxx,5340498 

回答

0

據我所知,在openpyxl中沒有方法刪除一行。所以看下面我使用COM來做到這一點。

import openpyxl 

filename = 'Users.xlsx' 
sheetname = 'Sheet1' 

wb = openpyxl.load_workbook(filename) 
sheet = wb.get_sheet_by_name(sheetname) 
for rows in sheet['A3':'B11']: 
    if rows[1].value == 'None': 
    rows[0].value = None 
    rows[1].value = None 
    else: 
    rows[0].value = rows[0].value + "," + rows[1].value.replace("-","") 
    rows[1].value = None 

wb.save(filename) 


import win32com.client 

xl = win32com.client.DispatchEx('Excel.Application') 
wb = xl.Workbooks.Open(Filename=filename) 
sheet = wb.Sheets(sheetname) 
for row in range(3,12): 
    if sheet.Range('A{}'.format(row)).Value is None: 
    sheet.Range('A{}'.format(row)).EntireRow.Delete(Shift=-4162) 

wb.Save() 
wb.Close() 
xl.Quit()