ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 260|回复: 0

[分享] EXCEL 指定文件簿指定表,指定范围格子末尾添加A

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-6-13 19:42 | 显示全部楼层 |阅读模式
一种思路



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()


您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-21 17:02 , Processed in 0.021390 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表