Python Openpyxl…删除具有特定单词的行

2024-10-01 15:44:09 发布

您现在位置:Python中文网/ 问答频道 /正文

您好,使用openpyxl模块来格式化电子表格。我试图将A列和B列与每行的A和B连接起来,并删除B列中的“-”。 我还试图删除列中包含“None”的任何行。我把第一部分写下来了,但是我很难删除“无”和整行。下面你会看到我的代码后面跟着我要实现的东西的前后。我将非常感谢你的帮助,因为我仍然是Python的熟人。在

**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

Tags: 模块nonevaluesheetrowswbopenpyxld0263xxx
1条回答
网友
1楼 · 发布于 2024-10-01 15:44:09

据我所知,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()

相关问题 更多 >

    热门问题