我正在尝试使用 python openpyxl 从 excel 中清除数据。 excel中的数据是动态的。所以,我不知道行数和列数。我需要从单元格 B2 到 excel 末尾的特定行和列示例中删除数据,这意味着不应编辑行 1 和列 A。我应该能够在 python 中给出任何索引位置并清除数据直到结束。
def del_excel_template1(file,start_col):
file = "Sample.xlsx"
wb_obj = openpyxl.load_workbook(file)
sheet_obj = wb_obj.active
l = sheet_obj.max_column
start_col = 2
for i in range (start_col,l+1):
sheet_obj.delete_cols(start_col)
wb_obj.save("Sample.xlsx")
使用 openpyxl delete_rows 删除整行并清除要保留的行中的单元格可能会更快。
请注意,您应该将单元格值设置为无以清除值,而不是“”。
import openpyxl
from openpyxl.utils import get_column_letter
file = 'Sample.xlsx'
wb_obj = openpyxl.load_workbook(file)
sheet_obj = wb_obj.active
start_cell = 'B2'
sc = sheet_obj[start_cell]
### Create range for the deletion on the start_cell row
row_cells = f'{start_cell}:{get_column_letter(sheet_obj.max_column)}{sc.column}'
### Set all cells value from start_cell in that row to None
for cell in sheet_obj[row_cells][0]:
cell.value = None
### Delete all rows from next after start cell to sheet max row
sheet_obj.delete_rows(sc.row+1, amount=sheet_obj.max_row-sc.row)
wb_obj.save('Sample_out.xlsx')
您可以尝试遍历动态范围并单独清除单元格:
# iterate through excel and delete data
for i in range(row_start_range, sheet_obj.max_row+1):
for j in range(col_start_range, sheet_obj.max_column+1):
cell_obj = sheet_obj.cell(row=i, column=j)
cell_obj.value = None