使用 Python:过滤 Excel Sheet 并将过滤后的视图另存为新视图 Sheet

Using Python: Filter an Excel Sheet and Save Filtered View as New Sheet

我目前正在开发一个小程序,该程序采用包含大量行(数十万行)的工作表,过滤掉单个列中的特定值,然后将过滤后的视图作为新工作表输出只是过滤后的视图条目。我不确定是否有更有效的方法来解决这个问题(而且我希望在处理大量行时更有效率)。

到目前为止,我已经成功复制了具有指定值的行,但我丢失了应用于原始工作表的所有格式。

我正在使用 openpyxl,但不确定如何保持格式化。

import openpyxl as opxl

book = opxl.load_workbook('Test.xlsx', read_only=True)
book2 = opxl.load_workbook('new_test.xlsx')

sheet = book.worksheets[2]
sheet2 = book2.worksheets[0]


for row in sheet.iter_rows():
    if row[4].value == 'TESTY':
        sheet2.append((cell.value for cell in row))
    elif row[4].value == 'TESTX':
        sheet2.append((cell.value for cell in row))

book2.save("Test(edited).xlsx")

类似这样的事情应该可以解决您的问题:

import openpyxl as opxl
book = opxl.load_workbook('Test.xlsx', read_only=True)
book2 = opxl.load_workbook('new_test.xlsx')

sheet = book.worksheets[2]
sheet2 = book2.worksheets[0]


for row in sheet.iter_rows():
    if row[4].value in ('TESTY', 'TESTX'):
        sheet2.append((cell.value for cell in row))
        for column, cell in enumerate(row):
            dst = sheet2.cell(sheet2.max_row, column + 1)
            dst.font = cell.font
            if cell.fill != None: dst.fill = cell.fill
            dst.border = cell.border
            dst.alignment = cell.alignment
            if cell.number_format != None: dst.number_format = cell.number_format
            if cell.value != None: dst.protection = cell.protection
       

book2.save("Test(edited).xlsx")