如何用Excel创建报表模板跨工作表取数批量生成命名PDF
方案1:Excel VBA 内置方案(无需额外安装软件)
无需下载其他工具,直接用Excel自带功能实现,适配你的现有工作流:
- 提前确认工作簿结构并按需调整后续代码参数:
- 存储产品信息的工作表命名为
产品清单,A列为产品名称、B列为合同起始日期、C列为合同终止日期,数据从第2行开始(第1行为表头) - 报表模板工作表命名为
报表模板,产品名称填充单元格假设为B2、合同起始日期填充单元格为B3、合同终止日期填充单元格为B4
- 存储产品信息的工作表命名为
- 按
Alt+F11打开VBA编辑器,右键点击当前工作簿名称,选择「插入」-「模块」,粘贴如下代码:
Sub 批量生成报表PDF() Dim 产品清单 As Worksheet, 模板 As Worksheet Dim 最后行 As Long, i As Long Dim 导出路径 As String, 文件名 As String ' 绑定工作表对象 Set 产品清单 = ThisWorkbook.Worksheets("产品清单") Set 模板 = ThisWorkbook.Worksheets("报表模板") ' 导出路径默认和当前Excel文件同文件夹 导出路径 = ThisWorkbook.Path & "\" ' 获取产品清单最后一行有效数据行号 最后行 = 产品清单.Cells(产品清单.Rows.Count, "A").End(xlUp).Row ' 遍历所有产品生成报表 For i = 2 To 最后行 ' 填充模板可变字段 模板.Range("B2").Value = 产品清单.Cells(i, "A").Value 模板.Range("B3").Value = 产品清单.Cells(i, "B").Value 模板.Range("B4").Value = 产品清单.Cells(i, "C").Value ' 刷新模板所有公式计算结果,若有透视表可下方加一行模板.RefreshAll Calculate ' 处理文件名非法字符 文件名 = Replace(Replace(Replace(产品清单.Cells(i, "A").Value, "/", ""), "\", ""), ":", "") & ".pdf" ' 导出PDF 模板.ExportAsFixedFormat _ Type:=xlTypePDF, _ Filename:=导出路径 & 文件名, _ Quality:=xlQualityStandard ' 产品清单D列标记生成状态,用于核对 产品清单.Cells(i, "D").Value = "已生成" Next i MsgBox "生成完成,共导出" & 最后行 - 1 & "份PDF" End Sub
- 回到Excel界面按
Alt+F8选择宏「批量生成报表PDF」点击运行即可,生成的PDF会保存在当前Excel文件所在的文件夹内。
方案2:Python 方案(适合后续有扩展需求的场景)
如果后续需要对接其他系统、增加更复杂的报表逻辑,可以用Python实现,核心依赖为openpyxl和pywin32库:
- 用
openpyxl读取产品清单工作表的全量产品数据 - 循环遍历每条数据,写入模板对应可变字段后保存为临时文件
- 调用
pywin32的Excel接口,将临时文件导出为以产品名称命名的PDF文件即可。
内容的提问来源于stack exchange,提问作者StackQA
相关产品推荐
相关产品推荐

