Python一键合并两Excel指定单元格并求和生成新表

Vibe Coding 使用 AI 回答

代码问题:

请帮我编写一个python程序,需求:分别读取excel文件A、B,抓取文件A中的A1和文件B中的A2,生成excel文件C(内容:A1=文件A中的A1、A2=文件B中的A2,A3=A1+A2)

代码解决方案:

下面给出完整可直接运行的 Python 代码,依赖 openpyxl(可同时满足读取和写入)。
运行前请先安装依赖:

pip install openpyxl

脚本说明

  1. 读取 ExcelA.xlsx 的 Sheet1!A1 → 记为 A1
  2. 读取 ExcelB.xlsx 的 Sheet1!A2 → 记为 A2
  3. 在新生成的 ExcelC.xlsx 的 Sheet1 中写三行:
    A1 = A1 值
    A2 = A2 值
    A3 = A1 + A2(数字求和,若读出来非数字则按 0 处理)
import os
from openpyxl import load_workbook, Workbook

# 可自行修改文件名与路径
EXCEL_A = "ExcelA.xlsx"
EXCEL_B = "ExcelB.xlsx"
EXCEL_C = "ExcelC.xlsx"

SHEET_NAME = "Sheet1"   # 需要读取/写入的工作表名称

def get_cell_value(file_path, sheet, cell):
    """读取指定文件-工作表-单元格的值;文件不存在或单元格空返回 None"""
    if not os.path.isfile(file_path):
        raise FileNotFoundError(f"未找到文件:{file_path}")
    wb = load_workbook(file_path, data_only=True)
    if sheet not in wb.sheetnames:
        raise ValueError(f"文件 {file_path} 中不存在工作表 {sheet}")
    return wb[sheet][cell].value

def main():
    # 1. 读取 A1、A2
    try:
        val_a1 = get_cell_value(EXCEL_A, SHEET_NAME, "A1")
        val_a2 = get_cell_value(EXCEL_B, SHEET_NAME, "A2")
    except Exception as e:
        print("读取失败:", e)
        return

    # 2. 转成数字(无法转换时按 0 处理)
    try:
        val_a1 = float(val_a1) if val_a1 is not None else 0
    except (ValueError, TypeError):
        val_a1 = 0

    try:
        val_a2 = float(val_a2) if val_a2 is not None else 0
    except (ValueError, TypeError):
        val_a2 = 0

    # 3. 求和
    val_a3 = val_a1 + val_a2

    # 4. 写入新文件
    wb = Workbook()
    ws = wb.active
    ws.title = SHEET_NAME

    ws["A1"] = val_a1
    ws["A2"] = val_a2
    ws["A3"] = val_a3

    # 可选:美化
    for cell in ws["A1:A3"]:
        cell[0].number_format = "0.00"  # 统一两位小数显示

    wb.save(EXCEL_C)
    print(f"已生成 {EXCEL_C};A1={val_a1}, A2={val_a2}, A3={val_a3}")

if __name__ == "__main__":
    main()

把脚本与 ExcelA.xlsx、ExcelB.xlsx 放在同一目录下,执行:

python merge_a1_a2.py

即可得到包含上述三行数据的 ExcelC.xlsx。