请帮我编写一个python程序,需求:分别读取excel文件A、B,抓取文件A中的A1和文件B中的A2,生成excel文件C(内容:A1=文件A中的A1、A2=文件B中的A2,A3=A1+A2)
下面给出完整可直接运行的 Python 代码,依赖 openpyxl(可同时满足读取和写入)。
运行前请先安装依赖:
pip install openpyxl
脚本说明
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。