You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python基于Excel模板生成新文件且保留原模板?

实现方案:基于Excel模板插入数据并另存新文件

完全可以实现你的需求——基于无数据的Excel模板插入DataFrame数据后另存为新文件,同时保留原模板完整不变。以下是结合你指定工具的具体实现步骤和代码:

核心思路

  1. 用openpyxl加载原始Excel模板(仅读取,不修改原文件)
  2. 用pandas.ExcelWriter结合openpyxl引擎,将加载的模板作为基础工作簿
  3. 将爬取得到的DataFrame写入模板指定的工作表
  4. 最后将工作簿另存为新文件,原模板文件全程不会被修改

完整代码示例

# 导入所需库
import requests
from bs4 import BeautifulSoup
import pandas as pd
from openpyxl import load_workbook
from pandas import ExcelWriter

# ----------------------
# 1. 爬取数据并生成DataFrame(替换为你的实际爬取逻辑)
# ----------------------
url = "https://example.com/target-page"  # 替换为你的目标URL
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

# 模拟爬取到的数据(替换为你实际解析得到的数据)
data = {
    "列1": ["数据1", "数据2", "数据3"],
    "列2": [100, 200, 300],
    "列3": ["内容A", "内容B", "内容C"]
}
df = pd.DataFrame(data)

# ----------------------
# 2. 加载Excel模板并写入数据
# ----------------------
template_path = "path/to/your/template.xlsx"  # 替换为你的模板文件路径
output_path = "path/to/your/new_output.xlsx"  # 替换为新文件的保存路径

# 加载模板工作簿,保留原格式(若模板有宏需添加keep_vba=True)
wb = load_workbook(template_path)

# 初始化ExcelWriter,指定使用openpyxl引擎,并传入已加载的工作簿
with ExcelWriter(output_path, engine="openpyxl", mode="w") as writer:
    # 将加载的模板工作簿关联到writer
    writer.book = wb
    # 将模板中的工作表信息同步到writer
    writer.sheets = {ws.title: ws for ws in wb.worksheets}
    
    # 将DataFrame写入指定工作表(示例为"Example Sheet")
    # startrow=1表示从第2行开始写(若模板第1行是表头),header=False避免重复写入表头
    df.to_excel(writer, sheet_name="Example Sheet", startrow=1, index=False, header=False)

# 执行完后,原模板文件template.xlsx保持不变,新文件output.xlsx为插入数据后的结果

关键细节说明

  • 保留模板格式:openpyxl会完整加载模板的样式、列宽、合并单元格等格式,写入数据后这些格式会被保留在新文件中
  • 避免修改原模板:全程仅读取原模板文件,最终将修改后的工作簿保存到新路径,原文件无任何改动
  • 表头处理:如果你的Excel模板已经包含表头,记得设置header=False和startrow=1(根据实际表头所在行数调整),避免重复写入表头
  • 宏模板支持:若模板包含VBA宏,加载时添加keep_vba=True参数即可保留宏代码

内容的提问来源于stack exchange,提问作者Dominik Kostienko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 12:20:50