def parse_cell_position(cell_position: str) -> Tuple[int, int]:
column_str = "".join([c for c in cell_position if c.isalpha()])
row_str = "".join([c for c in cell_position if c.isdigit()])
column = column_index_from_string(column_str)
row = int(row_str)
return column, row
def write_to_excel(xls_filename: str, start_cell: str, data_list: List[str], output_filename: str) -> None:
"""
将数据列表写入指定的 Excel 文件,支持覆盖指定单元格的数据。
:param xls_filename: 需要读取的xls文件(输入文件)
:param start_cell: 起始单元格位置(例如 'C20')
:param data_list: 需要写入的数据列表
:param output_filename: 输出的xlsx文件名(如果文件存在则修改,若不存在则创建)
:return: None
"""
workbook_xls = xlrd.open_workbook(xls_filename)
sheet_xls = workbook_xls.sheet_by_index(0)
if os.path.exists(output_filename):
workbook_xlsx = openpyxl.load_workbook(output_filename)
sheet_xlsx = workbook_xlsx.active
else:
workbook_xlsx = openpyxl.Workbook()
sheet_xlsx = workbook_xlsx.active
start_column, start_row = parse_cell_position(start_cell)
for i, data in enumerate(data_list):
sheet_xlsx.cell(row=start_row + i, column=start_column, value=data)
workbook_xlsx.save(output_filename)
def append_write_to_excel(xls_filename: str, start_cell: str, data_list: List[str], output_filename: str) -> None:
"""
将数据列表写入指定的 Excel 文件,支持追加写入。
:param xls_filename: 需要读取的xls文件(输入文件)
:param start_cell: 起始单元格位置(例如 'C20')
:param data_list: 需要写入的数据列表
:param output_filename: 输出的xlsx文件名(如果文件存在则修改,若不存在则创建)
:return: None
"""
workbook_xls = xlrd.open_workbook(xls_filename)
sheet_xls = workbook_xls.sheet_by_index(0)
if os.path.exists(output_filename):
workbook_xlsx = openpyxl.load_workbook(output_filename)
sheet_xlsx = workbook_xlsx.active
else:
workbook_xlsx = openpyxl.Workbook()
sheet_xlsx = workbook_xlsx.active
start_column, start_row = parse_cell_position(start_cell)
if os.path.exists(output_filename):
max_row = sheet_xlsx.max_row
start_row = max_row + 1 if start_row < max_row else start_row
for i, data in enumerate(data_list):
sheet_xlsx.cell(row=start_row + i, column=start_column, value=data)
workbook_xlsx.save(output_filename)