ASP.NET如何按模板导出Word/PDF?实例代码详解|ASP.NET模板导出Word/PDF实例

在ASP.NET中按指定模板导出Word和PDF文档,可通过OpenXML(Word)和QuestPDF(PDF)实现高效解决方案,以下是完整实现步骤:

NET如何按模板导出Word

低光图像增强算法-基于Pytorch的Retinex Net实现
加载中
低光图像增强算法-基于Pytorch的Retinex Net实现

Word导出实现(OpenXML)

核心流程:克隆模板文档 → 替换占位符 → 保存文件

// 安装NuGet包:DocumentFormat.OpenXml
public IActionResult ExportWord()
{
    string templatePath = "Templates/report_template.docx";
    string outputPath = "Output/report_output.docx";
    // 克隆模板文件
    System.IO.File.Copy(templatePath, outputPath, true);
    // 打开文档修改内容
    using (WordprocessingDocument doc = WordprocessingDocument.Open(outputPath, true))
    {
        var body = doc.MainDocumentPart.Document.Body;
        foreach (var text in body.Descendants<Text>())
        {
            // 替换模板标记
            if (text.Text.Contains("{CustomerName}"))
                text.Text = text.Text.Replace("{CustomerName}", "张三科技有限公司");
            if (text.Text.Contains("{ReportDate}"))
                text.Text = text.Text.Replace("{ReportDate}", DateTime.Now.ToString("yyyy-MM-dd"));
        }
    }
    return PhysicalFile(outputPath, "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
}

关键技术点:

NET如何按模板导出Word

  1. 模板制作:在Word中直接插入{CustomerName}等标记
  2. 动态表格:通过Table类遍历添加行数据
  3. 样式保留:修改文本不影响原始格式

PDF导出实现(QuestPDF)

推荐方案:使用现代库QuestPDF替代iTextSharp(避免AGPL许可问题)

// 安装NuGet包:QuestPDF
public IActionResult ExportPdf()
{
    var invoice = new InvoiceModel(
        invoiceNumber: "INV-2026-085",
        customerName: "李四集团",
        items: new List<InvoiceItem> {
            new ("网站开发", 2, 9800),
            new ("服务器托管", 12, 650)
        });
    var document = Document.Create(container =>
    {
        container.Page(page =>
        {
            page.Content().Column(column =>
            {
                column.Item().Text($"发票号: {invoice.InvoiceNumber}");
                column.Item().PaddingTop(20).Table(table =>
                {
                    table.ColumnsDefinition(columns =>
                    {
                        columns.RelativeColumn();
                        columns.RelativeColumn();
                        columns.RelativeColumn();
                    });
                    table.Header(header =>
                    {
                        header.Cell().Text("项目");
                        header.Cell().Text("数量");
                        header.Cell().Text("单价");
                    });
                    foreach (var item in invoice.Items)
                    {
                        table.Cell().Text(item.Name);
                        table.Cell().Text(item.Quantity.ToString());
                        table.Cell().Text(item.Price.ToString("C"));
                    }
                });
            });
        });
    });
    var stream = new MemoryStream();
    document.GeneratePdf(stream);
    stream.Position = 0;
    return File(stream, "application/pdf", "invoice.pdf");
}

进阶技巧

  1. 动态图片插入
    // Word中插入图片
    var imagePart = mainPart.AddImagePart(ImagePartType.Jpeg);
    using (var stream = new FileStream("logo.jpg", FileMode.Open))
    {
     imagePart.FeedData(stream);
    }
    var drawing = new Drawing(
     new DW.Inline(
         new DW.Extent() { Cx = 500000, Cy = 200000 },
         new DW.DocProperties() { Id = 1U, Name = "Logo" },
         new Graphic(new GraphicData(
             new PIC.Picture(
                 new PIC.NonVisualPictureProperties(...)
             ) { Uri = "http://schemas.openxmlformats.org/drawingml/2006/picture" }
         )
     )
    );
  2. PDF模板复用
    // 复用已有PDF模板
    container.Page(page =>
    {
     page.Background().Image("background.jpg");
     page.Content().Element(new InvoiceTemplate(invoice));
    });

性能优化方案

操作类型 优化建议 效果提升
大数据量导出 分页生成+流式写入 内存降低70%+
高频访问场景 启用内存缓存输出结果 响应速度提升3倍
复杂模板 预编译模板结构 生成速度提升50%

企业级解决方案

graph LR
A[数据库] --> B[.NET Core服务]
B --> C{导出类型}
C -->|Word| D[OpenXML模板引擎]
C -->|PDF| E[QuestPDF渲染器]
D --> F[Azure Blob存储]
E --> F
F --> G[CDN分发]

安全增强措施:

NET如何按模板导出Word

  1. 文件校验:添加SHA256数字指纹
  2. 防注入:清理模板中的XML特殊字符
  3. 访问控制:基于JWT的下载权限验证

遇到具体场景需要帮助?欢迎在评论区留言
问题示例:

  1. 如何在Word模板中处理动态表格合并单元格?
  2. 百万级数据导出怎样避免内存溢出?
  3. 如何实现PDF中的跨页表格表头重复?

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://test.idctop.com/article/22910.html

赞 (0)
上一篇 2026年2月11日 04:55
下一篇 2026年2月11日 04:58

相关推荐

  • Ubuntu网络配置文件怎么改?,自定义VLAN怎么配置?

    在Ubuntu Server上配置自定义VLAN网络,核心答案是:通过netplan的YAML配置文件声明VLAN虚拟子接口,指定物理网卡和VLAN ID,执行netplan apply后即可生效,全程无需重启系统,这套方法适用于Ubuntu 18.04到24.04全系列服务器版本,也是目前绝大多数生产环境采用……

    2026年8月20日
    600
  • 公司网络分析报告

    公司网络分析报告在数字化转型的深水区,服务器的稳定性、响应速度以及数据安全能力,直接决定了企业业务的连续性,对于追求极致性能与高性价比的企业级用户而言,选择一款合适的云服务器不仅是技术决策,更是成本控制的战略核心,本次深度测评聚焦于当前市场上主流的高性能云服务器实例,结合真实业务场景的压力测试,为您提供客观、详……

    2026年6月25日
    1600
  • AkileCloud日本VPS测评,AkileCloud日本VPS好用吗

    AkileCloud日本VPS测评:7.3元/月实测数据与性能表现在云计算服务日益同质化的今天,寻找一款兼具高性价比、稳定性能与优质网络连接的VPS产品并非易事,AkileCloud作为近年来在开发者社区崭露头角的新兴云服务商,凭借其极具竞争力的定价策略和主打的日本线路优势,吸引了大量关注,本次测评将基于202……

    2026年5月25日
    4500
  • 北京整机租用交付周期受哪些因素影响?,怎么选服务商?

    北京整机租用的交付周期主要受硬件库存、配置定制深度、机房资源、测试部署流程四个因素影响,常规配置当天到几天内可交付,深度定制方案则需一两周甚至更久,整机租用不是买手机,拆开包装就能用,它背后牵扯到硬件选型、机房上架、系统部署、网络调试一整套流程,你在北京朝阳和在大兴下单,交付时间可能差出一整天;你租一台标配2U……

    2026年8月13日
    800
  • 六一云互联独立服务器测评,高防实测数据表现,六一云互联服务器怎么样

    2026年实测数据显示,六一云互联独立服务器在DDoS防护场景下,面对100Gbps级攻击仍能保持99.99%可用性,综合性价比优于同类竞品,是金融与游戏行业高防需求的优选方案,高防性能实测:真实流量下的抗压表现核心防护指标解析在2026年网络攻击日益复杂化的背景下,单纯宣称“无限清洗”已无法说服专业用户,本次……

    2026年5月13日
    5300
  • 公有云IT收入如何计算?公有云IT收入增长趋势

    【公有云IT收入】服务器深度测评:2026年高性价比选型指南与限时优惠解析在数字化转型的深水区,公有云IT收入已成为衡量云服务厂商核心竞争力的关键指标,对于企业IT决策者而言,选择一款既能保障业务稳定性,又能有效控制成本(TCO)的云服务器,是提升投资回报率(ROI)的核心环节,本文基于2026年最新的市场数据……

    2026年6月29日
    1700
  • 如何实现AI深度学习模拟?| 技术解析与实战应用

    AI深度学习模拟:突破传统界限的科学新范式深度学习模拟正从根本上重塑科学探索与工程设计的范式,这一技术融合深度神经网络与物理建模,在复杂系统仿真领域展现出超越传统数值方法的强大能力,其核心价值在于:通过数据驱动与物理约束的协同,实现对高维、多尺度复杂系统的高效建模与精准预测,解决了传统方法在计算成本与精度上的根……

    2026年2月14日
    13500
  • 大数据与云计算有什么区别?大数据与云计算哪个更有前景

    关于大数据与云计算在数字化转型的深水区,数据已成为企业的核心资产,而算力则是驱动这一资产变现的关键引擎,对于追求极致性能与稳定性的企业而言,选择一款能够支撑海量数据处理、高并发访问以及复杂计算任务的云服务器,不再仅仅是成本考量,更是业务连续性与竞争力的基石,本文基于2026年的最新技术架构与市场环境,对几款主流……

    2026年5月30日
    4600
  • 个人网站到底要买多大的空间?个人网站空间大小选择指南

    在构建个人网站时,许多初学者往往陷入一个误区:认为空间越大越好,或者盲目追求低价,服务器空间的选型并非简单的数字堆砌,而是对访问速度、稳定性、扩展性以及长期运维成本的综合权衡,选错空间,轻则导致网站加载缓慢、用户体验极差,重则因数据丢失或安全漏洞造成不可挽回的损失,本文将基于实际部署测试,深入剖析不同场景下的空……

    2026年7月3日
    6600
  • aspx后台开发中常见的技术难题及解决方案探讨?

    使用 ASPX 构建强大、高效的后台管理系统:核心优势与专业实践ASP.NET Web Forms(通常以 .aspx 文件形式呈现)是构建企业级后台管理系统的成熟、可靠且高效的框架选择,尽管现代框架如 ASP.NET Core MVC/Blazor 日益流行,ASPX 凭借其独特的快速开发能力、丰富的服务器控……

    2026年2月6日
    12130

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注