如果Openpyxl等于另一个工作表,则删除它?

时间:2018-04-01 23:09:47

标签: python excel web-scraping openpyxl

如果值相等,我只是想删除它。我认为代码进一步解释。 我看过一些关于这个主题的帖子,但我不明白,它是关于以特殊顺序删除一个单元格(数字)。我试图删除一个值,如果它等于工作表'关键字头脑风暴'中列表中的元素。

代码: def checkBrainstormWithTrashcan():

trashcanList = list()
brainstormList = list()

brainstormKeyword = wb['Keyword Brainstorm']

for row in brainstormKeyword.rows:
    for cell in row:
        if cell.value != None:
            brainstormList.append(cell.value)


trashcanKeyword = wb['Trashcan']
for row in trashcanKeyword.rows:
    for cell in row:
        if cell.value != None:
            trashcanList.append(cell.value)

print(brainstormList)
print(trashcanList)

for brain in brainstormList:
    for trash in trashcanList:
        if brain == trash:
            print(brain)
            #trying to remove here. the value of brain is exactly the values 
             wich are equal

我希望你们能提供帮助,如果你有关于删除元素的建议或网站,那就太好了。

最诚挚的问候 KaanDev

1 个答案:

答案 0 :(得分:0)

我假设你要删除一个单元格值,即如果cell.valuetrashcanListbrainstormList中的元素匹配,则将其设为空。

基于以上假设,以下是上面说明的示例。我相信您将能够使用逻辑/代码来满足您的确切需求。

我们可以使用openpyxl模块来操作xlsxlsx个文件。 有关openpyxl here的更多信息,请参阅。

我创建了一个文件test.xlsx(见图),其中包含两列(1,2)中的数据。

import openpyxl

wb = openpyxl.load_workbook(filename = 'test.xlsx')
sheet = wb['Keyword Brainstorm']

我们将wb句柄和工作表的工作簿读到sheet

接下来,基于假设,我创建了两个静态列表,其数据如下所示。

trashcanList  = ['big', 'fox']
brainstormList  = ['white', 'bear']

接下来,我们在工作表中获得最大行数和列值(以迭代行/列动态)。

row_count = sheet.max_row
column_count = sheet.max_column

然后我们首先遍历行,然后是列,并检查单元格中的值是否在列表中。如果是,请替换为空白字符。

for current_row in xrange(1,row_count+1):
    for current_col in xrange(1,column_count+1):
        _cell = sheet.cell(row=current_row, column=current_col)
        if _cell.value in trashcanList or _cell.value in brainstormList:
            _cell.value = ''

最后保存修改后的文件(使用新名称,您也可以使用相同的名称,但它会覆盖原始内容)。然后关闭文件句柄。

wb.save('outTest.xlsx')
wb.close() 

<强>结果:
结果,您可以在输出文件outtest.xlsx中删除列表中的值(替换为空白)。

enter image description here