如何清除excel中选中行和列的数据到excel末尾?

问题描述 投票:0回答:2

Excel with data 我正在尝试使用 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")
python openpyxl
2个回答
0
投票

使用 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')

0
投票

您可以尝试遍历动态范围并单独清除单元格:

  # 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
© www.soinside.com 2019 - 2024. All rights reserved.