使用 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")
我目前正在开发一个小程序,该程序采用包含大量行(数十万行)的工作表,过滤掉单个列中的特定值,然后将过滤后的视图作为新工作表输出只是过滤后的视图条目。我不确定是否有更有效的方法来解决这个问题(而且我希望在处理大量行时更有效率)。
到目前为止,我已经成功复制了具有指定值的行,但我丢失了应用于原始工作表的所有格式。
我正在使用 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")