IRONSOFTWAREHOME
USING IRONXL

如何在C#中导出模板

Curtis Chau
Curtis Chau
Updated: 2026年6月28日

using Microsoft Excel 模板可以简化报表生成流程,因为它能够保留格式、公式和布局,同时动态填充数据。 本教程演示如何使用 IronXL 将数据高效导出到现有的 Excel 工作表模板,无需依赖 Microsoft Office 或 Excel Interop。以下示例展示了如何将数据写入 Excel 模板并创建专业的 Excel 表格输出。 假设您正在寻找一种方法,在没有安装 Microsoft Office 的情况下,使用 C# 将内容导出到已存在的 Excel 模板。 在这种情况下,该 Excel 库提供了一个简洁、高性能的解决方案,具有更高级的功能,使您能够从各种来源(包括数据集对象)插入数据。

除了 Excel 工作簿之外,IronXL 还与其他数据交换格式(如 XML 文件)很好地集成,使开发人员能够轻松地在系统之间导入、导出或转换结构化数据。 无论您需要将数据库或系统文件中的数据写入 Excel,此库都支持与 .NET 应用程序无缝集成。

如何在C#中导出模板:图1

为什么使用Excel模板进行数据导出?

与从头开始创建电子表格相比,Excel 模板具有显著优势。 模板可以保持专业的格式、复杂的公式、条件格式规则和经过验证的数据结构。 组织通常有标准化的发票、报告和仪表板模板,这些模板必须在保留其设计的同时,整合来自数据库、API 或数据表等集合对象的动态数据。 在对输出文件应用条件格式和单元格格式时,模板可确保所有生成的 xlsx 格式文档保持一致。

通过以编程方式填充现有模板,开发人员可以节省无数的格式化工作时间,并确保所有生成的文档的一致性。 IronXL 使这一过程变得无缝,支持各种 Excel 格式,包括 XLSX、XLS 文件、XLSM 和 XLTX 模板,而无需安装 Office。 这些操作的源代码简单明了,易于在任何项目文件夹中实现。

如何在C#中导出模板:图2

设置 IronXL 以进行模板操作

首先通过 NuGet 包管理器安装 IronXL。 打开软件包管理器控制台并运行以下命令:

PM > Install-Package IronXL.Excel

如何在C#中导出模板:图3

安装完成后,将必要的命名空间添加到您的 C# 文件中:

using IronXL;

IronXL 无需安装 Microsoft Office 即可独立运行,因此非常适合服务器环境和跨平台应用程序,包括 Docker 容器和云平台。 有关详细的设置说明和更多信息,请访问IronXL 入门指南。 该库支持 Windows、Linux 和 macOS 环境下的 .NET Framework、.NET Core 和 .NET 5+,使其成为 .NET 应用程序的理想选择。

如何在C#中导出模板:图4 - 功能

加载和填充 Excel 模板

using IronXL 的WorkBook.Load()方法加载现有模板非常简单。 以下示例展示了如何打开模板并填充数据,将第一行作为标题,并有效地管理列名:

// Load the existing Excel template for data import
WorkBook workbook = WorkBook.Load("ReportTemplate.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Populate specific worksheet cells with data
sheet["B2"].Value = "Q4 2024 Sales Report";
sheet["C4"].StringValue = DateTime.Now.ToString("MMMM dd, yyyy");
sheet["C6"].DecimalValue = 125000.50m;
sheet["C7"].DecimalValue = 98500.75m;
sheet["C8"].Formula = "=C6-C7"; // Profit calculation
// Populate a range with array data
decimal[] monthlyData = { 10500, 12300, 15600, 11200 };
for (int i = 0; i < monthlyData.Length; i++)
{
    sheet[$"E{10 + i}"].DecimalValue = monthlyData[i];
}
// Save the populated template
workbook.SaveAs("Q4_Sales_Report.xlsx");

这段代码加载一个预先设计的模板,保留所有现有格式,并用新数据填充特定单元格。 DecimalValue属性确保数值数据保持正确的格式。 当相邻数据发生变化时,公式单元格会自动重新计算,从而保持模板的计算逻辑。 了解更多关于在 IronXL 中使用 Excel 公式的信息。

输入

如何在C#中导出模板:图5 - 示例模板输入

输出

如何在C#中导出模板:图6 - 加载Excel模板输出

使用模板占位符

许多模板使用占位符文本标记,需要替换为实际数据。 IronXL 通过单元格迭代和文本替换有效地处理这种情况。 当您需要将数据写入 Excel 模板并插入动态内容时,这种方法可提供最大的灵活性:

// Load template with placeholders
WorkBook workbook = WorkBook.Load("InvoiceTemplate.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Find and replace placeholder text in cells
foreach (var cell in sheet["A1:H50"])
{
    if (cell.Text.Contains("{{CustomerName}}"))
        cell.Value = cell.Text.Replace("{{CustomerName}}", "Acme Corporation");
    if (cell.Text.Contains("{{InvoiceDate}}"))
        cell.Value = cell.Text.Replace("{{InvoiceDate}}", DateTime.Now.ToShortDateString());
    if (cell.Text.Contains("{{InvoiceNumber}}"))
        cell.Value = cell.Text.Replace("{{InvoiceNumber}}", "INV-2024-001");
}
// Populate line items dynamically
var items = new[] {
    new { Description = "Software License", Qty = 5, Price = 299.99 },
    new { Description = "Support Package", Qty = 1, Price = 999.99 }
};
int startRow = 15;
foreach (var item in items)
{
    sheet[$"B{startRow}"].Value = item.Description;
    sheet[$"E{startRow}"].IntValue = item.Qty;
    sheet[$"F{startRow}"].DoubleValue = item.Price;
    sheet[$"G{startRow}"].Formula = $"=E{startRow}*F{startRow}";
    startRow++;
}
workbook.SaveAs("GeneratedInvoice.xlsx");

这种方法会在指定的范围内搜索占位符标记,并将其替换为实际值。 模板的格式,包括字体、颜色和边框,在整个过程中保持不变。 对于更高级的场景,可以探索 IronXL 的单元格样式选项,以便在需要时动态修改格式。

实际应用示例

以下是一个完整的示例,演示如何使用带有预格式化单元格的现有 Excel 模板生成月度销售报告。 此代码演示了如何处理对象发送者事件并编写综合报告。 当处理来自系统数据库或内存集合的数据时,可以使用新的数据表或现有数据集填充模板,从而高效地将数据导出到 Excel:

public void GenerateMonthlyReport(string templatePath, Dictionary<string, decimal> salesData)
{
    // Load the existing template file
    WorkBook workbook = WorkBook.Load(templatePath);
    WorkSheet sheet = workbook.GetWorkSheet("Monthly Report");
    // Set report header information
    sheet["B2"].Value = $"Sales Report - {DateTime.Now:MMMM yyyy}";
    sheet["B3"].Value = $"Generated: {DateTime.Now:g}";
    // Populate sales data starting from row 6
    int currentRow = 6;
    decimal totalSales = 0;
    foreach (var sale in salesData)
    {
        sheet[$"B{currentRow}"].Value = sale.Key;  // Product name
        sheet[$"C{currentRow}"].DecimalValue = sale.Value;  // Sales amount
        sheet[$"D{currentRow}"].Formula = $"=C{currentRow}/C${salesData.Count + 6}*100"; // Percentage formula
        totalSales += sale.Value;
        currentRow++;
    }
    // Update total row with sum
    sheet[$"C{currentRow}"].DecimalValue = totalSales;
    sheet[$"C{currentRow}"].Style.Font.Bold = true;
    // Save with timestamp
    string outputPath = $"Reports/Monthly_Report_{DateTime.Now:yyyyMMdd}.xlsx";
    workbook.SaveAs(outputPath);
}

该方法接受销售数据并填充标准化模板,自动计算百分比和总计,同时保持模板的专业外观。 模板中现有的图表和条件格式会根据新数据自动更新。 注意:从 DataTable 对象或数据集集合向 Excel 传输数据时,请保留列名并将第一行作为标题。

以下示例方法无论您需要从字典写入数据、从数据库查询插入值,还是从各种系统源将数据导出到 Excel,都能无缝运行。 只需将输出文件保存到您指定的文件夹即可轻松访问。 有关使用 DataTables 的更多信息,请参阅 DataTable 导入文档和源代码示例。

输入

如何在C#中导出模板:图7 - Excel模板输入

输出

如何在C#中导出模板:图8 - 月度报告输出

ABCpdf 常见问题和解决方案

使用模板时,请确保文件路径正确,并且模板没有被其他进程锁定。 对于受密码保护的模板,请使用 WorkBook.Load("template.xlsx", "password")。 如果公式没有更新,请在填充数据后调用 sheet.Calculate()。 对于大型数据集,请考虑使用带有流式选项的workbook.SaveAs()来优化内存使用。 在不同的系统环境下处理 xlsx 格式文件时,请查阅故障排除文档以获取更多信息和解决方案。

结论

IronXL 简化了 C# 中的 Excel 模板填充,在保持复杂格式的同时,还能高效地从各种来源(包括数据集对象和数据库连接)注入动态数据。 这种方法可以显著缩短开发时间,并保持组织内所有报告工作流程的文档一致性。 无论您需要将数据写入 Excel、插入新行,还是对输出文件应用单元格格式,IronXL 都提供了在 .NET 应用程序中实现专业 Excel 自动化所需的工具。

准备好简化您的 Excel 报表制作流程了吗? 立即开始免费试用 IronXL,测试模板填充在您的项目中,或探索更多 Excel 自动化教程以增强您的工作流程。 对于生产环境部署,请查看符合您需求的许可选项

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

...
阅读更多

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户