使用 IRONXL 如何使用 IronXL.Excel 在 C# 中生成 Excel 文件 Curtis Chau 已更新:一月 5, 2026 下载 IronXL NuGet 下载 DLL 下载 免费试用 法学硕士副本 法学硕士副本 将页面复制为 Markdown 格式,用于 LLMs 在 ChatGPT 中打开 向 ChatGPT 咨询此页面 在双子座打开 向 Gemini 询问此页面 在 Grok 中打开 向 Grok 询问此页面 打开困惑 向 Perplexity 询问有关此页面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 复制链接 电子邮件文章 传统上,使用 C# 或 Visual Basic 以编程方式生成 Excel 工作表文件需要安装 Microsoft Office 或进行复杂的 COM 互操作。IronXL 彻底改变了这一现状,提供了一个简单的 API,无需任何 Office 依赖即可创建 Excel 应用程序文件。 本教程将引导您使用 IronXL.Excel 在 C# 中构建 Excel 文件,从基本的电子表格创建到高级格式化和数据库集成。 无论您是创建报表、导出数据(XLS 文件或 XLSX 文件),还是自动生成电子表格,您都将学到在 .NET 应用程序中使用 Excel 的基本技术。 如何使用 IronXL 在 C# 中生成 Excel 文件:图 1 - IronXL 为什么要在没有 Microsoft Office 的情况下生成 Excel 工作表文件? 在不依赖 Office 的情况下开发 Excel 生成功能,解决了关键的部署难题。 由于许可成本和资源开销,服务器环境很少安装 Microsoft Office。 每次安装 Office 都需要大量的磁盘空间和内存,因此对于云部署或容器化应用程序来说并不实用。 IronXL 通过独立运作消除了这些限制。 您的 C# Excel 文件生成可在 Windows、Linux、macOS、Docker 容器或 Azure 应用服务上运行,无需修改。 这种跨平台兼容性意味着您只需编写一次,即可部署到任何地方,无论是针对 .NET Framework、.NET Core 还是 .NET 8/9 应用程序。 [如何使用 IronXL 在 C# 中生成 Excel 文件:图 2 - 跨平台](/static-assets/excel/blog/generate-excel-csharp-blog/generate-excel-csharp-blog-2.webp) 性能显著提高,无需 COM Interop 开销。 传统的办公自动化会为每个操作创建单独的进程实例,从而消耗内存和 CPU 资源。 IronXL 在应用程序的进程空间内以内存方式处理所有内容,因此当您以编程方式生成 Excel 文件时,执行速度更快,资源消耗更低。 由于 IronXL 以一个 NuGet 包的形式发布,因此部署变得非常简单。 无需维护任何注册表项、COM 注册和 Office 服务包。 您的持续集成管道可以无缝运行,Docker 容器保持轻量级。 这种简化方法使 IronXL 大受欢迎,在各种 [ 开发人员论坛](https://stackoverflow.com/questions/tagged/ironxl)上,专业人士分享了他们在 Excel 自动化方面的经验。 一些开发人员仍在使用微软的 Open XML 生产工具直接处理 Office Open XML 文件结构。 但是,这种方法需要更多的人工操作和对 XML 模式及 Open XML SDK 安装的详细了解。 IronXL 消除了这些复杂性,让您能够更快地以编程方式使用 Excel。 [如何使用 IronXL 在 C# 中生成 Excel 文件:图 3 - 功能](/static-assets/excel/blog/generate-excel-csharp-blog/generate-excel-csharp-blog-3.webp) ## 如何在 C# 项目中安装 IronXL? 通过解决方案资源管理器中的 NuGet 包管理器安装 IronXL 只需几分钟。 在 Visual Studio 中,右键单击您的项目并选择 "管理 NuGet 包"。搜索 "IronXL.Excel",然后单击 "安装"。 该软件包自动包含用 C# 生成 Excel 文件所需的所有依赖项。 或者,使用软件包管理器控制台: ```shell :ProductInstall ``` [如何使用 IronXL 在 C# 中生成 Excel 文件:图 4 - 安装](/static-assets/excel/blog/generate-excel-csharp-blog/generate-excel-csharp-blog-4.webp) 适用于使用现代 C# 项目的 .NET CLI 用户: ```shell dotnet add package IronXL.Excel ``` 通过以下简单测试验证安装是否已完成,该测试将以编程方式创建 Excel 文件: ```csharp using IronXL; // Create a new Excel workbook var workbook = WorkBook.Create(); Console.WriteLine("IronXL installed successfully!"); ``` 这段代码将创建一个内存工作簿对象。 如果运行无误,IronXL 即可投入使用。 该库支持所有现代 .NET 版本,确保与您现有的项目兼容。 有关详细的安装指导和故障排除,请查阅官方文档。 准备好开始了吗? 立即下载 IronXL,几分钟内开始生成 Excel 文件。 ### 输出 [如何使用 IronXL 在 C# 中生成 Excel 文件:图 5 - 控制台输出](/static-assets/excel/blog/generate-excel-csharp-blog/generate-excel-csharp-blog-5.webp) 如何创建您的第一个 Excel 文件? 使用 IronXL 创建 Excel 文件始于 [WorkBook 类](/csharp/excel/object-reference/api/IronXL.WorkBook.html),它是您进行所有 Excel 操作的入口。 该库同时支持现代 XLSX 和传统 XLS 格式,让您在用 C# 生成 Excel 文件时能灵活地满足不同的要求。 ```cs using IronXL; // Create a new workbook (XLSX format by default) WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX); // Add metadata workbook.Metadata.Title = "Monthly Sales Report"; workbook.Metadata.Author = "Sales Department"; workbook.Metadata.Comments = "Generated using IronXL"; // Create a worksheet WorkSheet worksheet = workbook.CreateWorkSheet("January Sales"); // Add some basic data worksheet["A1"].Value = "Date"; worksheet["B1"].Value = "Product"; worksheet["C1"].Value = "Quantity"; worksheet["D1"].Value = "Revenue"; // Add data rows worksheet["A2"].Value = new DateTime(2024, 1, 15); worksheet["B2"].Value = "Widget Pro"; worksheet["C2"].Value = 100; worksheet["D2"].Value = 2500.00; // Save the workbook workbook.SaveAs("FirstExcelFile.xlsx"); ``` 这段代码演示了 Excel 文件生成的几个关键概念。 `WorkBook.Create()` 方法将在内存中初始化一个新的 Excel 文件。 您可以使用`ExcelFileFormat`枚举指定格式 - 选择 XLSX 可兼容现代 Excel,选择 XLS 可支持旧版 Excel。 `Metadata`属性允许您嵌入文档信息,这些信息将显示在 Excel 的文件属性中,并遵循[Microsoft 的文档属性标准](https://support.microsoft.com/en-us/office/view-or-change-the-properties-for-an-office-file-21d604c2-481e-4379-8e54-1dd4622c6b75)。 `CreateWorkSheet()`方法会添加一个具有指定名称的新工作表。 Excel 熟悉的单元格符号(A1、B1 等)使数值设置更加直观。IronXL 可自动处理数据类型转换,无需显式转换即可识别日期、数字和文本。 `SaveAs()`方法会将整个 Excel 文件写入磁盘。 有关工作表操作的更多信息,请浏览工作表管理教程。 ### 输出 [如何使用 IronXL 在 C# 中生成 Excel 文件:图 6 - 基本 Excel 输出](/static-assets/excel/blog/generate-excel-csharp-blog/generate-excel-csharp-blog-6.webp) 如何将数据写入 Excel 单元格? IronXL.Excel 提供了多种填充 Excel 单元格的方法,从单个单元格赋值到批量范围操作。 了解这些方法有助于您针对数据场景选择最有效的方法。 ```cs WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX); // Create a worksheet WorkSheet worksheet = workbook.CreateWorkSheet("Employees"); // Individual cell assignment worksheet["A1"].Value = "Employee Name"; worksheet["A2"].Value = "John Smith"; worksheet["A3"].Value = "Jane Doe"; // Range assignment for multiple cells worksheet["B1:B3"].Value = "Active"; // Using numeric indices (0-based) worksheet.SetCellValue(0, 2, "Department"); // C1 worksheet.SetCellValue(1, 2, "Sales"); // C2 worksheet.SetCellValue(2, 2, "Marketing"); // C3 // Array-based population string[] headers = { "ID", "Name", "Email", "Phone" }; for (int i = 0; i < headers.Length; i++) { worksheet.SetCellValue(0, i, headers[i]); } // Working with different data types worksheet["E1"].Value = "Salary"; worksheet["E2"].Value = 75000.50m; // Decimal for currency worksheet["E3"].Value = 82000.75m; worksheet["F1"].Value = "Start Date"; worksheet["F2"].Value = new DateTime(2020, 3, 15); worksheet["F3"].Value = new DateTime(2019, 7, 1); worksheet["G1"].Value = "Full Time"; worksheet["G2"].Value = true; // Boolean worksheet["G3"].Value = true; workbook.SaveAs("FirstExcelFile.xlsx"); ``` 代码显示了 IronXL 灵活的单元格寻址。 字符串符号("A1")让 Excel 用户感觉很自然,而数字索引则为循环和动态生成提供了程序控制。 范围赋值("B1:B3")可以有效地将多个单元格设置为相同的值,非常适合初始化列或应用默认值。 IronXL 可智能处理不同的数据类型。小数可保持财务数据的精确性,DateTime 对象可正确格式化为 Excel 日期,布尔值可显示为 TRUE/FALSE。 这种自动转换消除了手动格式化代码,同时确保了数据的完整性。 ### 输出 [如何使用 IronXL 在 C# 中生成 Excel 文件:图 7 - Excel 输出](/static-assets/excel/blog/generate-excel-csharp-blog/generate-excel-csharp-blog-7.webp) 对于较大的数据集,可以考虑这种模式: ```cs // Populate from a data source var employees = GetEmployeeData(); // Your data source for (int row = 0; row < employees.Count; row++) { worksheet[$"A{row + 2}"].Value = employees[row].Id; worksheet[$"B{row + 2}"].Value = employees[row].Name; worksheet[$"C{row + 2}"].Value = employees[row].Department; worksheet[$"D{row + 2}"].Value = employees[row].Salary; } ``` 这种方法通过数据收集进行迭代,将每个属性映射到相应的列。 字符串插值( `$"A{row + 2}"` )动态生成单元格地址,从第 2 行开始以保留标题。 如何应用专业格式? 专业 Excel 文件需要的不仅仅是原始数据。 IronXL's [样式 API](/csharp/excel/how-to/cell-font-size/) 可在您用 C# 生成 Excel 文件时,通过格式、颜色和可视化层次结构将普通电子表格转换为精美的商业文档。 ```cs using IronXL; WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX); // Create a worksheet WorkSheet worksheet = workbook.CreateWorkSheet("Employees"); // Header formatting var headerRange = worksheet["A1:D1"]; headerRange.Style.Font.Bold = true; headerRange.Style.Font.Height = 12; headerRange.Style.SetBackgroundColor("#4472C4"); headerRange.Style.Font.Color = "#FFFFFF"; // Column width adjustment worksheet.AutoSizeColumn(0); // Auto-fit column A worksheet.GetColumn(1).Width = 20; // Set column B to 20 characters // Number formatting var salaryColumn = worksheet["E2:E3"]; salaryColumn.FormatString = "$#,##0.00"; // Date formatting var dateColumn = worksheet["F2:F3"]; dateColumn.FormatString = "MM/dd/yyyy"; // Cell borders var dataRange = worksheet["A1:G3"]; dataRange.Style.TopBorder.Type = IronXL.Styles.BorderType.Thin; dataRange.Style.BottomBorder.Type = IronXL.Styles.BorderType.Thin; dataRange.Style.LeftBorder.Type = IronXL.Styles.BorderType.Thin; dataRange.Style.RightBorder.Type = IronXL.Styles.BorderType.Thin; // To set border color, use: dataRange.Style.TopBorder.Color = "#000000"; dataRange.Style.BottomBorder.Color = "#000000"; dataRange.Style.LeftBorder.Color = "#000000"; dataRange.Style.RightBorder.Color = "#000000"; // Text alignment worksheet["A1:G1"].Style.HorizontalAlignment = IronXL.Styles.HorizontalAlignment.Center; // Alternating row colors for readability for (int row = 2; row <= 3; row++) { if (row % 2 == 0) { worksheet[$"A{row}:G{row}"].Style.SetBackgroundColor("#F2F2F2"); } } ``` 该格式化代码可创建符合企业标准的专业外观。 带有背景颜色的粗体标题建立了视觉层次。 `SetBackgroundColor()` 方法接受十六进制颜色代码,可精确控制您的颜色方案。 字体属性包括大小、颜色、粗体、斜体和下划线选项,这些都是创建符合企业品牌准则的 Excel 文件所必需的。 列宽调整可防止文本截断。 `AutoSizeColumn()` 自动调整内容大小,而 `SetColumnWidth()` 则提供精确控制。 数字格式使用 Excel 的格式代码。 例如,"$#,##0.00 "显示的是带有千位分隔符和两位小数的货币。 日期格式遵循类似模式,使用 [Microsoft Excel 规范](https://support.microsoft.com/en-us/office/number-format-codes-5026bbd6-04bc-48cd-bf33-80f18b4eae68)中记录的标准 Excel 日期格式字符串。 边框定义数据边界,提高可读性。 BorderType 枚举提供了多种样式:细、中、粗、点和虚线。 对齐方式可根据电子表格惯例,将标题居中,数字右对齐。 交替的行列颜色通常被称为 "带状行列",有助于读者在宽泛的数据集中追踪信息。 在我们的单元格样式指南中了解更多有关高级格式化的信息,以创建格式化的 Excel 数据。 ### 输出 [如何使用 IronXL 在 C# 中生成 Excel 文件:图 8 - 格式化的 Excel 输出](/static-assets/excel/blog/generate-excel-csharp-blog/generate-excel-csharp-blog-8.webp) 如何以编程方式使用 Excel 公式? Excel 公式通过自动计算使电子表格栩栩如生。 IronXL 支持公式创建和评估,可实现自动更新的动态电子表格。 ```cs var workbook = WorkBook.Create(); // Create a budget worksheet WorkSheet budget = workbook.CreateWorkSheet("Q1 Budget"); // Headers budget["A1"].Value = "Category"; budget["B1"].Value = "January"; budget["C1"].Value = "February"; budget["D1"].Value = "March"; budget["E1"].Value = "Q1 Total"; // Budget categories and values string[] categories = { "Salaries", "Marketing", "Operations", "Equipment", "Training" }; decimal[,] monthlyBudgets = { { 50000, 52000, 51000 }, { 15000, 18000, 20000 }, { 8000, 8500, 9000 }, { 12000, 5000, 7000 }, { 3000, 3500, 4000 } }; // Populate data for (int i = 0; i < categories.Length; i++) { budget[$"A{i + 2}"].Value = categories[i]; budget[$"B{i + 2}"].Value = monthlyBudgets[i, 0]; budget[$"C{i + 2}"].Value = monthlyBudgets[i, 1]; budget[$"D{i + 2}"].Value = monthlyBudgets[i, 2]; // Row total formula budget[$"E{i + 2}"].Formula = $"=SUM(B{i + 2}:D{i + 2})"; } // Monthly totals row budget["A7"].Value = "Monthly Total"; budget["B7"].Formula = "=SUM(B2:B6)"; budget["C7"].Formula = "=SUM(C2:C6)"; budget["D7"].Formula = "=SUM(D2:D6)"; budget["E7"].Formula = "=SUM(E2:E6)"; // Calculate percentages budget["A9"].Value = "Marketing %"; budget["B9"].Formula = "=B3/B7*100"; budget["C9"].Formula = "=C3/C7*100"; budget["D9"].Formula = "=D3/D7*100"; // Average calculation budget["A10"].Value = "Average Spending"; budget["B10"].Formula = "=AVERAGE(B2:B6)"; // Evaluate all formulas workbook.EvaluateAll(); workbook.SaveAs("Budget.xlsx"); ``` 本预算示例说明了公式的实际应用。 公式属性接受以等号开头的标准 Excel 公式语法。 IronXL 支持常用函数:SUM、AVERAGE、COUNT、MAX、MIN 等。 公式中的单元格引用与 Excel 完全相同,包括相对引用和绝对引用。 行合计公式(`=SUM(B{i + 2}:D{i + 2})`)计算每个类别的季度合计。 字符串插值可以为每一行动态生成正确的单元格引用。 月度总数是整列的总和,而百分比计算则是将特定单元格除以总数。 `EvaluateAll()` 方法处理所有公式,更新整个工作簿中的计算值。 这将确保公式在 Excel 中打开时显示结果。 如果不进行评估,Excel 将显示公式,直到用户触发重新计算。 ### 输出 [如何使用 IronXL 在 C# 中生成 Excel 文件:图 9 - 使用公式输出 Excel 文件](/static-assets/excel/blog/generate-excel-csharp-blog/generate-excel-csharp-blog-9.webp) 如何将数据从数据库导出到 Excel? 现实世界中的应用程序通常会将数据库数据导出到 Excel 中,用于报告和分析。 IronXL 通过内置的`DataTable`支持简化了此过程,从 C# 应用程序生成 Excel 文件时无需手动进行字段映射。 ```cs using System; using System.Data; using System.Data.SqlClient; // Simulate database retrieval (replace with your actual database code) DataTable GetSalesData() { DataTable dt = new DataTable("Sales"); dt.Columns.Add("OrderID", typeof(int)); dt.Columns.Add("CustomerName", typeof(string)); dt.Columns.Add("Product", typeof(string)); dt.Columns.Add("Quantity", typeof(int)); dt.Columns.Add("UnitPrice", typeof(decimal)); dt.Columns.Add("OrderDate", typeof(DateTime)); // Sample data (normally from database) dt.Rows.Add(1001, "ABC Corp", "Widget Pro", 50, 25.99m, DateTime.Now.AddDays(-5)); dt.Rows.Add(1002, "XYZ Ltd", "Widget Basic", 100, 15.99m, DateTime.Now.AddDays(-4)); dt.Rows.Add(1003, "ABC Corp", "Widget Premium", 25, 45.99m, DateTime.Now.AddDays(-3)); dt.Rows.Add(1004, "Tech Solutions", "Widget Pro", 75, 25.99m, DateTime.Now.AddDays(-2)); dt.Rows.Add(1005, "XYZ Ltd", "Widget Premium", 30, 45.99m, DateTime.Now.AddDays(-1)); return dt; } // Export to Excel WorkBook reportWorkbook = WorkBook.Create(); WorkSheet reportSheet = reportWorkbook.CreateWorkSheet("Sales Report"); // Get data from database DataTable salesData = GetSalesData(); // Method 1: Manual mapping with formatting reportSheet["A1"].Value = "Order Report - " + DateTime.Now.ToString("MMMM yyyy"); reportSheet.Merge("A1:F1"); reportSheet["A1"].Style.Font.Bold = true; reportSheet["A1"].Style.Font.Height = 14; // Headers int headerRow = 3; for (int col = 0; col < salesData.Columns.Count; col++) { reportSheet.SetCellValue(headerRow - 1, col, salesData.Columns[col].ColumnName); } // Format headers var headers = reportSheet[$"A{headerRow}:F{headerRow}"]; headers.Style.Font.Bold = true; headers.Style.SetBackgroundColor("#D9E1F2"); // Data rows for (int row = 0; row < salesData.Rows.Count; row++) { for (int col = 0; col < salesData.Columns.Count; col++) { reportSheet.SetCellValue(row + headerRow, col, salesData.Rows[row][col]); } // Add total column with formula reportSheet[$"G{row + headerRow + 1}"].Formula = $"=D{row + headerRow + 1}*E{row + headerRow + 1}"; } // Add total header and format reportSheet["G3"].Value = "Total"; reportSheet["G3"].Style.Font.Bold = true; reportSheet["G3"].Style.SetBackgroundColor("#D9E1F2"); // Format currency columns reportSheet[$"E{headerRow + 1}:E{headerRow + salesData.Rows.Count}"].FormatString = "$#,##0.00"; reportSheet[$"G{headerRow + 1}:G{headerRow + salesData.Rows.Count}"].FormatString = "$#,##0.00"; // Format date column reportSheet[$"F{headerRow + 1}:F{headerRow + salesData.Rows.Count}"].FormatString = "MM/dd/yyyy"; // Add summary section int summaryRow = headerRow + salesData.Rows.Count + 2; reportSheet[$"A{summaryRow}"].Value = "Summary"; reportSheet[$"A{summaryRow}"].Style.Font.Bold = true; reportSheet[$"A{summaryRow + 1}"].Value = "Total Orders:"; reportSheet[$"B{summaryRow + 1}"].Formula = $"=COUNTA(A{headerRow + 1}:A{headerRow + salesData.Rows.Count})"; reportSheet[$"A{summaryRow + 2}"].Value = "Total Revenue:"; reportSheet[$"B{summaryRow + 2}"].Formula = $"=SUM(G{headerRow + 1}:G{headerRow + salesData.Rows.Count})"; reportSheet[$"B{summaryRow + 2}"].FormatString = "$#,##0.00"; // Auto-fit columns for (int col = 0; col <= 6; col++) { reportSheet.AutoSizeColumn(col); } // Evaluate formulas and save reportWorkbook.EvaluateAll(); reportWorkbook.SaveAs("DatabaseExport.xlsx"); ``` 这个全面的示例演示了使用 C# 生成 Excel 文件的完整数据库到 Excel 工作流程。 `DataTable`模拟数据库检索 - 在生产环境中,请使用 Entity Framework、Dapper 或 ADO.NET 将其替换为实际的数据库查询。 根据 [Microsoft 数据导出最佳实践](https://docs.microsoft.com/en-us/office/dev/add-ins/excel/excel-add-ins-data-validation)的建议,手动映射方法可以完全控制格式和布局。 代码会创建一个带有标题、格式化标题和数据行的专业报告。 公式列动态计算行总数。 摘要部分使用 Excel 公式计算订单数和收入总和,确保在数据发生变化时更新这些值。 货币和日期格式要符合商业文档标准,同时自动调整列的大小,确保所有内容都能正确显示。 如需处理较大的数据集,请查看我们的性能优化指南。 ### 输出 [如何使用 IronXL 在 C# 中生成 Excel 文件:图 10 - 数据库导出到 Excel 输出](/static-assets/excel/blog/generate-excel-csharp-blog/generate-excel-csharp-blog-10.webp) 需要简化 Excel 报告? [获取许可证](/csharp/excel/licensing/),释放 IronXL 在生产部署方面的全部潜力。 如何处理多个工作表? 复杂的 Excel 文件通常需要多个工作表来组织相关数据。 IronXL 通过创建、访问和组织工作表的直观方法简化了多工作表管理。 ```cs // Create a multi-sheet workbook WorkBook companyReport = WorkBook.Create(); // Create department sheets WorkSheet salesSheet = companyReport.CreateWorkSheet("Sales"); WorkSheet inventorySheet = companyReport.CreateWorkSheet("Inventory"); WorkSheet hrSheet = companyReport.CreateWorkSheet("HR Metrics"); // Populate Sales sheet salesSheet["A1"].Value = "Sales Dashboard"; salesSheet["A3"].Value = "Region"; salesSheet["B3"].Value = "Q1 Sales"; salesSheet["C3"].Value = "Q2 Sales"; string[] regions = { "North", "South", "East", "West" }; decimal[] q1Sales = { 250000, 180000, 220000, 195000 }; decimal[] q2Sales = { 275000, 195000, 240000, 210000 }; for (int i = 0; i < regions.Length; i++) { salesSheet[$"A{i + 4}"].Value = regions[i]; salesSheet[$"B{i + 4}"].Value = q1Sales[i]; salesSheet[$"C{i + 4}"].Value = q2Sales[i]; } // Populate Inventory sheet inventorySheet["A1"].Value = "Inventory Status"; inventorySheet["A3"].Value = "Product"; inventorySheet["B3"].Value = "Stock Level"; inventorySheet["C3"].Value = "Reorder Point"; inventorySheet["D3"].Value = "Status"; // Add inventory data with conditional status string[] products = { "Widget A", "Widget B", "Widget C" }; int[] stock = { 150, 45, 200 }; int[] reorderPoint = { 100, 50, 75 }; for (int i = 0; i < products.Length; i++) { inventorySheet[$"A{i + 4}"].Value = products[i]; inventorySheet[$"B{i + 4}"].Value = stock[i]; inventorySheet[$"C{i + 4}"].Value = reorderPoint[i]; // Status based on stock level string status = stock[i] <= reorderPoint[i] ? "REORDER" : "OK"; inventorySheet[$"D{i + 4}"].Value = status; // Color code status if (status == "REORDER") { inventorySheet[$"D{i + 4}"].Style.Font.Color = "#FF0000"; } } // Create summary sheet referencing other sheets WorkSheet summarySheet = companyReport.CreateWorkSheet("Summary"); summarySheet["A1"].Value = "Company Overview"; summarySheet["A3"].Value = "Metric"; summarySheet["B3"].Value = "Value"; summarySheet["A4"].Value = "Total Q1 Sales"; summarySheet["B4"].Formula = "=SUM(Sales!B4:B7)"; summarySheet["A5"].Value = "Total Q2 Sales"; summarySheet["B5"].Formula = "=SUM(Sales!C4:C7)"; summarySheet["A6"].Value = "Products Need Reorder"; summarySheet["B6"].Formula = "=COUNTIF(Inventory!D4:D6,\"REORDER\")"; // Format all sheets consistently foreach (WorkSheet sheet in companyReport.WorkSheets) { // Format headers sheet["A1"].Style.Font.Bold = true; sheet["A1"].Style.Font.Height = 14; var headerRow = sheet["A3:D3"]; headerRow.Style.Font.Bold = true; headerRow.Style.SetBackgroundColor("#E7E6E6"); } // Save multi-sheet workbook companyReport.SaveAs("CompanyReport.xlsx"); ``` 本示例创建了一份完整的多页报告。 每个工作表都有特定的用途:销售数据、库存跟踪和人力资源指标。 汇总表使用跨表公式合并关键指标。 请注意公式中的工作表引用语法,"Sales!B4:B7"指的是销售工作表中的单元格 B4 到 B7。 库存表展示了条件逻辑,将低库存商品染成红色,以便立即引起注意。 `foreach`循环在所有工作表中应用一致的格式,使整个工作簿保持专业的外观。 工作表名称在 Excel 中显示为选项卡,方便用户在不同的数据视图之间浏览。 Excel 生成的最佳实践是什么? 在 C# 中高效生成 Excel 文件需要在内存使用、错误处理和部署方面考虑周到。 在以编程方式创建 Excel 电子表格时,这些实践可确保您的应用程序有效扩展,同时保持可靠性。 对于大文件,内存管理变得至关重要。 分块处理数据,而不是将整个数据集加载到内存中: ```cs // Process large datasets efficiently public void ExportLargeDataset(string filename) { WorkBook workbook = WorkBook.Create(); WorkSheet sheet = workbook.CreateWorkSheet("Data"); int rowsPerBatch = 1000; int currentRow = 1; // Process in batches foreach (var batch in GetDataInBatches(rowsPerBatch)) { foreach (var record in batch) { sheet[$"A{currentRow}"].Value = record.Id; sheet[$"B{currentRow}"].Value = record.Name; sheet[$"C{currentRow}"].Value = record.Value; currentRow++; } } workbook.SaveAs(filename); } ``` 错误处理可防止应用程序崩溃,并在生成 Excel 文件时提供有意义的反馈: ```cs try { WorkBook workbook = WorkBook.Create(); // Excel generation code workbook.SaveAs("output.xlsx"); } catch (Exception ex) { // Log the error Console.WriteLine($"Excel generation failed: {ex.Message}"); // Implement appropriate recovery or notification } ``` 对于网络应用程序,在内存中生成 Excel 文件并将其传输给用户: ```cs // ASP.NET Core example public IActionResult DownloadExcel() { WorkBook workbook = GenerateReport(); var stream = new MemoryStream(); workbook.SaveAs(stream); stream.Position = 0; return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "report.xlsx"); } ``` 部署方面的考虑因素可确保生产运营的顺利进行。 IronXL 可在受限环境中工作,无需提升权限,因此适合共享主机和容器化部署。 在部署包中包含 IronXL 许可证文件,并确保您的应用程序在需要时具有临时文件操作的写入权限。 有关其他部署指导,请查阅 [部署文档](/csharp/excel/docs/)。 ## 结论 IronXL 将 Excel 文件在 C# 中的生成从一个复杂的挑战转变为简单明了的编码。 您已经学会了创建工作簿、填充单元格、应用格式化、使用公式和导出数据库数据--所有这一切都无需依赖 Microsoft Office。 这些以编程方式生成 Excel 文件的技术可在 Windows、Linux 和云平台上一致运行。 准备好在您的 C# 应用程序中实现 Excel 生成了吗? [开始免费试用](trial-license)或浏览全面的[API文档](/csharp/excel/object-reference/api/)以了解高级功能。 对于生产部署,请查看与您的项目要求相匹配的许可选项。 [如何使用 IronXL 在 C# 中生成 Excel 文件:图 11 - 许可](/static-assets/excel/blog/generate-excel-csharp-blog/generate-excel-csharp-blog-11.webp) 常见问题解答 什么是 IronXL? IronXL.Excel 是一个功能强大的库,用于在 .NET 应用程序中创建、读取和编辑 Excel 文件,而无需 Microsoft Office 或复杂的 COM Interop。 如何使用 IronXL.Excel 在 C# 中创建 Excel 文件? 有了 IronXL.Excel,您就可以利用其用户友好的 API,以 C# 语言编程生成 Excel 文件。这包括创建电子表格、应用格式化以及与数据库集成。 我需要安装 Microsoft Office 来使用 IronXL 吗? 不,IronXL 不需要 Microsoft Office。它允许您在不依赖任何 Office 的情况下创建和处理 Excel 文件。 IronXL 能否同时处理 XLS 和 XLSX 文件格式? 是的,IronXL.Excel 支持 XLS 和 XLSX 文件格式,使您能够无缝处理各种 Excel 文件。 IronXL 适合创建报告和导出数据吗? 当然,IronXL.Excel 凭借其强大的功能和无缝集成能力,是生成报告和将数据导出到 Excel 文件的理想选择。 IronXL 提供哪些格式选项? IronXL.Excel 提供先进的格式化选项,包括单元格样式、条件格式化等,让您可以创建视觉效果好、条理清晰的 Excel 文档。 我可以用IronXL自动化电子表格生成吗? 是的,IronXL 可以实现电子表格生成过程的自动化,从而更容易高效地处理大型数据集和重复性任务。 IronXL 兼容 Visual Basic 和 C# 吗? 是的,IronXL 可以与 C# 和 Visual Basic 一起使用,为在 .NET 中使用不同编程语言的开发人员提供了灵活性。 IronXL 如何与数据库集成? IronXL.Excel 可以轻松与数据库集成,使您能够以最小的工作量在 Excel 文件和数据库系统之间导入和导出数据。 在哪里可以找到在 .NET 应用程序中使用 IronXL 的教程? 您可以在 Iron Software 网站上找到关于在 .NET 应用程序中使用 IronXL 的全面教程,指导您完成从基础到高级的 Excel 文件创建和操作。 Curtis Chau 立即与工程团队聊天 技术作家 Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。 相关文章 已发布一月 21, 2026 C# CSV 库:IronXL,用于读取、写入和 Excel 转换 学习使用 IronXL 作为您的 C# CSV 库。读取、写入并在 CSV 和 Excel 格式之间转换,伴有简单代码示例。 阅读更多 已发布一月 21, 2026 C# 将 CSV 文件读取到 DataTable:完整开发者指南 学习如何在 C# 中使用 IronXL 有效地将 CSV 文件读取到 DataTable。包括 CSV 解析和数据库导入的简单代码示例。 阅读更多 已发布一月 21, 2026 使用 IronXL 在 VB.NET 中打开 Excel 文件 - 无需 Office 互操作 学习在 VB.NET 中无需 Microsoft Office 打开和读取 Excel 文件。通过 IronXL 的简单教程及工作代码示例处理 XLSX/XLS。 阅读更多 在 C# 中使用 StreamReader 读取 Excel 文件的替代方法 - IronXL.Excel使用 IronXL 将 C# 保存为 CSV ...
已发布一月 21, 2026 C# CSV 库:IronXL,用于读取、写入和 Excel 转换 学习使用 IronXL 作为您的 C# CSV 库。读取、写入并在 CSV 和 Excel 格式之间转换,伴有简单代码示例。 阅读更多
已发布一月 21, 2026 C# 将 CSV 文件读取到 DataTable:完整开发者指南 学习如何在 C# 中使用 IronXL 有效地将 CSV 文件读取到 DataTable。包括 CSV 解析和数据库导入的简单代码示例。 阅读更多
已发布一月 21, 2026 使用 IronXL 在 VB.NET 中打开 Excel 文件 - 无需 Office 互操作 学习在 VB.NET 中无需 Microsoft Office 打开和读取 Excel 文件。通过 IronXL 的简单教程及工作代码示例处理 XLSX/XLS。 阅读更多