|
一种思路
import tkinter as tk
from tkinter import simpledialog, filedialog, messagebox
import openpyxl
def add_letter_to_range(file_path, sheet_name, start_cell, end_cell):
# 打开 Excel 文件
workbook = openpyxl.load_workbook(file_path)
# 检查工作表是否存在
if sheet_name not in workbook.sheetnames:
raise KeyError(f"Worksheet {sheet_name} does not exist.")
# 选择指定的工作表
sheet = workbook[sheet_name]
# 解析起始和结束单元格的位置
start_col, start_row = openpyxl.utils.cell.coordinate_from_string(start_cell)
end_col, end_row = openpyxl.utils.cell.coordinate_from_string(end_cell)
start_col = openpyxl.utils.cell.column_index_from_string(start_col)
end_col = openpyxl.utils.cell.column_index_from_string(end_col)
# 遍历指定范围的单元格
for row in range(start_row, end_row + 1):
for col in range(start_col, end_col + 1):
cell = sheet.cell(row=row, column=col)
# 检查单元格是否有值,如果有则添加 'A'
if cell.value:
cell.value = f"{cell.value}A"
# 保存修改后的文件
workbook.save(file_path)
print(f"文件 {file_path} 已成功更新。")
def main():
# 创建Tkinter窗口
root = tk.Tk()
root.withdraw() # 隐藏主窗口
# 弹出文件选择对话框
file_path = filedialog.askopenfilename(
title="选择 Excel 文件",
filetypes=(("Excel files", "*.xlsx;*.xls"), ("All files", "*.*"))
)
if not file_path:
print("未选择文件")
return
# 打开 Excel 文件以获取工作表名称
workbook = openpyxl.load_workbook(file_path)
sheet_names = workbook.sheetnames
# 弹出表名输入对话框
sheet_name = simpledialog.askstring("输入", f"请输入要修改的表名(可选项:{', '.join(sheet_names)})")
if not sheet_name:
print("未输入表名")
return
if sheet_name not in sheet_names:
messagebox.showerror("错误", f"工作表 {sheet_name} 不存在,请选择正确的工作表名。")
return
# 弹出范围输入对话框
cell_range = simpledialog.askstring("输入", "请输入要修改的范围 (例如 A1:B3)")
if not cell_range:
print("未输入范围")
return
# 解析输入的范围
try:
start_cell, end_cell = cell_range.split(':')
except ValueError:
messagebox.showerror("错误", "范围格式错误,请使用 'A1:B3' 格式")
return
try:
add_letter_to_range(file_path, sheet_name, start_cell, end_cell)
except KeyError as e:
messagebox.showerror("错误", str(e))
if __name__ == "__main__":
main()
|
|