使用 IRONXL 无需 Office Interop 即可在 C# 中生成 Excel 文件 Curtis Chau 已更新:2026年1月25日 下载 IronXL NuGet 下载 DLL 下载 免费试用 LLM副本 LLM副本 将页面复制为 Markdown 格式,用于 LLMs 在 ChatGPT 中打开 向 ChatGPT 咨询此页面 在双子座打开 向 Gemini 询问此页面 在 Grok 中打开 向 Grok 询问此页面 打开困惑 向 Perplexity 询问有关此页面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 复制链接 电子邮件文章 使用IronXL在C#中创建Excel文件,该库允许您制作、格式化和填充Excel电子表格,而无需Microsoft Office。这非常适合服务器环境、Docker容器和CI/CD管道。 为什么要在没有Microsoft Office的情况下生成Excel文件? 为什么对DevOps来说,无Office生成Excel文件很重要? 无需Office来开发Excel生成功能,可以解决关键的部署挑战。 由于许可费用和资源需求,服务器环境通常缺少Microsoft Office。 每次安装Office都需要大量的磁盘空间和内存,使其不适合云部署或容器化应用。 部署到AWS Lambda或在Docker容器中运行时,轻量级解决方案对于基础设施自动化至关重要。 IronXL通过独立运行消除了这些限制。 您的Excel文件生成在Windows、Linux、macOS、Docker容器或Azure App Services上运行,无需更改。 这种跨平台兼容性意味着您只需编写一次,即可部署到任何地方,无论是针对 .NET Framework、.NET Core 还是 .NET 8/9 应用程序。 对于使用.NET MAUI或Blazor的团队,IronXL在所有现代.NET平台上无缝集成。 IronXL支持所有主要的.NET平台和操作系统,实现最大的部署灵活性。 IronXL与其他Excel库相比如何? 特征 IronXL EPPlus 封闭式 XML 非营利组织 价格 $749 $599 免费 免费 办公依赖性 无 无 无 无 性能 快40倍* 良好 缓和 语速较慢 内存使用 <1GB** 2-3GB 1-2GB 3-5GB Docker 支持 本地 有限的 基本的 基本的 公式支持 165+函数 100+ 80+ 基本的 商业支持 是 是 否 否 学习曲线 简易 缓和 缓和 陡峭 *基于最近的性能改进 **用于处理大型Excel文件 IronXL提供哪些性能优势? 在没有COM Interop开销的情况下,性能显著提高。 传统的办公自动化会为每个操作创建单独的进程实例,从而消耗内存和 CPU 资源。IronXL在应用程序的进程空间内以内存方式处理所有内容,因此当您以编程方式生成 Excel 文件时,执行速度更快,资源消耗更低。 该库经过重大性能改进,最近的更新提供了高达40倍的速度提高和将内存使用量从19.5 GB显著减少到不到1 GB。 由于IronXL以一个 NuGet 包的形式发布,因此部署变得非常简单。 无需维护注册表项、COM注册或Office服务包。 您的持续集成管道运行顺畅,Docker容器保持轻量。 这种简化的方法使IronXL成为一个热门选择,在各种开发者论坛中都有讨论,专业人士在其中分享他们关于无Interop的Excel自动化的经验。 IronXL通过直观的API设计提供完整的Excel操作功能。 如何在我的C#项目中安装IronXL? 对于DevOps工作流,最佳的安装方法是什么? 通过NuGet软件包管理器安装IronXL只需片刻。 在 Visual Studio 中,右键单击您的项目并选择 "管理 NuGet 包"。搜索 "IronXl.Excel",然后单击 "安装"。 该软件包自动包含用 C# 生成 Excel 文件所需的所有依赖项。 有关特定于您的开发环境的详细安装指南,请参阅入门概述。 或者,使用软件包管理器控制台: Install-Package IronXl.Excel Install-Package IronXl.Excel SHELL 软件包管理器控制台确认成功安装了IronXL,所有必需的依赖项均已安装。 如何将IronXL集成到CI/CD管道中? 对于使用现代C#项目进行自动化构建管道的.NET CLI用户: dotnet add package IronXl.Excel dotnet add package IronXl.Excel SHELL 对于容器化部署,添加到您的Dockerfile中: RUN dotnet add package IronXl.Excel 通过这个简单的测试验证安装,程序化地创建Excel文件: using IronXL; // new Excel workbook var workbook = WorkBook.Create(); Console.WriteLine("IronXL installed successfully!"); using IronXL; // new Excel workbook var workbook = WorkBook.Create(); Console.WriteLine("IronXL installed successfully!"); $vbLabelText $csharpLabel 这段代码将创建一个内存工作簿对象。 如果运行无误,IronXL 即可投入使用。 该库支持所有现代 .NET 版本,确保与您现有的项目兼容。 对于VB.NET开发者,类似的功能可以通过VB特定语法示例获得。 处理旧文件格式或遇到文件大小问题时,该库提供完整解决方案。 输出 控制台输出确认IronXL已经正确安装并准备好进行Excel生成任务。 快速入门:在C#中创建Excel文件 使用IronXL创建Excel文件只需几行代码,使其非常适合快速开发和部署场景。 使用 NuGet 包管理器安装 https://www.nuget.org/packages/IronXL.Excel PM > Install-Package IronXL.Excel 复制并运行这段代码。 using IronXL; // Create a new workbook WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX); // Add a worksheet WorkSheet sheet = workbook.CreateWorkSheet("Sales"); // Add data sheet["A1"].Value = "Product"; sheet["B1"].Value = "Quantity"; sheet["C1"].Value = "Revenue"; // Save the file workbook.SaveAs("sales_report.xlsx"); 部署到您的生产环境中进行测试 通过免费试用立即在您的项目中开始使用IronXL Free 30 Day Trial 如何创建我的第一个Excel文件? 基本的Excel生成有哪些必要步骤? 使用IronXL创建Excel文件从WorkBook类开始,这是您进行所有Excel操作的入口。 该库同时支持现代 XLSX 和传统 XLS 格式,让您在用 C# 生成 Excel 文件时能灵活地满足不同的要求。 创建电子表格功能为初始化新工作簿提供了完整的选项。 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"); 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"); $vbLabelText $csharpLabel 在生成的Excel文件中应如何使用元数据? 这段代码演示了 Excel 文件生成的几个关键概念。 WorkBook.Create()方法在内存中初始化一个新的Excel文件。 您可以使用ExcelFileFormat枚举指定格式——选择XLSX以兼容现代Excel或选择XLS以支持旧版。 元数据属性允许您嵌入文档信息,该信息显示在Excel的文件属性中,符合Microsoft的文档属性标准,并有助于企业环境中文件的组织。 了解更多关于编辑工作簿元数据的内容。 CreateWorkSheet()方法添加具有指定名称的新工作表。 Excel 熟悉的单元格符号(A1、B1 等)使数值设置更加直观。IronXL 可自动处理数据类型转换,无需显式转换即可识别日期、数字和文本。 SaveAs()方法将完整的Excel文件写入磁盘。 有关更多工作表操作,请查看工作表管理教程。 输出 由IronXL生成的基本Excel文件,显示具有适当列头的结构化数据。 如何将数据写入Excel单元格? 填充Excel数据有什么高效方法? IronXl.Excel 提供了多种填充 Excel 单元格的方法,从单个单元格赋值到批量范围操作。 了解这些方法有助于您针对数据场景选择最有效的方法。 《编写Excel值》指南全面涵盖了所有可用选项。 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("EmployeeData.xlsx"); 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("EmployeeData.xlsx"); $vbLabelText $csharpLabel 如何有效处理大型数据集? 代码显示了IronXL灵活的单元格寻址。 字符串符号("A1")让 Excel 用户感觉很自然,而数字索引则为循环和动态生成提供了程序控制。 范围赋值("B1:B3")可以有效地将多个单元格设置为相同的值,非常适合初始化列或应用默认值。 处理命名范围或命名表时,IronXL提供了额外的组织能力。 对于较大的数据集,可以考虑这种模式: // 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; } // 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; } $vbLabelText $csharpLabel 这种方法通过数据收集进行迭代,将每个属性映射到相应的列。 字符串插值($"A{row + 2}")动态生成单元格地址,从第 2 行开始,以保留页眉。 处理大型数据集时,您可以动态添加行和列或复制单元格范围以提高效率。 输出 员工数据电子表格展示了在IronXL中的多种数据类型和单元格分配方法。 如何应用专业格式? 创建企业质量的Excel文件需要什么? 专业 Excel 文件需要的不仅仅是原始数据。 IronXL的样式API通过格式化、颜色和视觉层次将普通电子表格转化为精美的商业文档,您在C#中生成Excel文件时可以使用。 该库提供完整的单元格格式选项,用于创建视觉上吸引人的电子表格。 using IronXL; using IronXl.Formatting; WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX); // Create a worksheet WorkSheet worksheet = workbook.CreateWorkSheet("Employees"); // Add sample data first worksheet["A1"].Value = "ID"; worksheet["B1"].Value = "Name"; worksheet["C1"].Value = "Department"; worksheet["D1"].Value = "Phone"; worksheet["E1"].Value = "Salary"; worksheet["F1"].Value = "Start Date"; worksheet["G1"].Value = "Full Time"; // Add employee data worksheet["A2"].Value = 101; worksheet["B2"].Value = "John Smith"; worksheet["C2"].Value = "Sales"; worksheet["D2"].Value = "(555) 123-4567"; worksheet["E2"].Value = 75000.50m; worksheet["F2"].Value = new DateTime(2020, 3, 15); worksheet["G2"].Value = true; worksheet["A3"].Value = 102; worksheet["B3"].Value = "Jane Doe"; worksheet["C3"].Value = "Marketing"; worksheet["D3"].Value = "(555) 987-6543"; worksheet["E3"].Value = 82000.75m; worksheet["F3"].Value = new DateTime(2019, 7, 1); worksheet["G3"].Value = true; // Header formatting var headerRange = worksheet["A1:G1"]; 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.SetColumnWidth(1, 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.SetColor("#000000"); dataRange.Style.BottomBorder.SetColor("#000000"); dataRange.Style.LeftBorder.SetColor("#000000"); dataRange.Style.RightBorder.SetColor("#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"); } } workbook.SaveAs("FormattedEmployees.xlsx"); using IronXL; using IronXl.Formatting; WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX); // Create a worksheet WorkSheet worksheet = workbook.CreateWorkSheet("Employees"); // Add sample data first worksheet["A1"].Value = "ID"; worksheet["B1"].Value = "Name"; worksheet["C1"].Value = "Department"; worksheet["D1"].Value = "Phone"; worksheet["E1"].Value = "Salary"; worksheet["F1"].Value = "Start Date"; worksheet["G1"].Value = "Full Time"; // Add employee data worksheet["A2"].Value = 101; worksheet["B2"].Value = "John Smith"; worksheet["C2"].Value = "Sales"; worksheet["D2"].Value = "(555) 123-4567"; worksheet["E2"].Value = 75000.50m; worksheet["F2"].Value = new DateTime(2020, 3, 15); worksheet["G2"].Value = true; worksheet["A3"].Value = 102; worksheet["B3"].Value = "Jane Doe"; worksheet["C3"].Value = "Marketing"; worksheet["D3"].Value = "(555) 987-6543"; worksheet["E3"].Value = 82000.75m; worksheet["F3"].Value = new DateTime(2019, 7, 1); worksheet["G3"].Value = true; // Header formatting var headerRange = worksheet["A1:G1"]; 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.SetColumnWidth(1, 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.SetColor("#000000"); dataRange.Style.BottomBorder.SetColor("#000000"); dataRange.Style.LeftBorder.SetColor("#000000"); dataRange.Style.RightBorder.SetColor("#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"); } } workbook.SaveAs("FormattedEmployees.xlsx"); $vbLabelText $csharpLabel 如何实现高级样式功能? 该格式化代码可创建符合企业标准的专业外观。 具有背景模式和颜色的粗体标题建立视觉层次。 SetBackgroundColor()方法接受十六进制颜色代码,提供精确的颜色方案控制。 字体属性包括尺寸、颜色、粗体、斜体和下划线选项,这些都是创建符合企业品牌指南的Excel文件所必需的。 对于高级样式需求,探索条件格式化能力。 列宽调整可防止文本截断。 SetColumnWidth()提供精确控制。 自动调整行和列大小功能确保您的数据以最佳格式显示。 数字格式使用Excel的格式代码——了解更多关于Excel数字格式的全面格式化选项。 边框和单元格对齐定义了数据边界,提升可读性。 BorderType枚举提供了多种样式:细、中、厚、虚线和破折号。 边框和对齐选项居中标题,按电子表格惯例右对齐数字。 交替行颜色,常称为"带状行",可以帮助读者追踪广泛数据集中的信息。 输出 经过专业格式化的Excel文件展示了IronXL的样式能力,适用于企业文档。 如何以编程方式使用Excel公式? 哪些公式功能启用动态计算? Excel 公式通过自动计算使电子表格栩栩如生。IronXL支持公式创建和评估,可实现自动更新的动态电子表格。 该库包括对超过165个Excel函数的支持,并允许您以编程方式编辑公式。 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"); 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"); $vbLabelText $csharpLabel 如何排除常见公式问题? 此预算示例展示了实际公式应用。 公式属性接受以等号开头的标准 Excel 公式语法。 IronXL支持常见函数:MIN以及许多其他函数。 公式中的单元格引用与 Excel 完全相同,包括相对引用和绝对引用。 对于更高级的计算,请探索Excel聚合函数和C#中的Excel公式。 当公式未按预期计算时: 确保正确的语法:公式必须以=开头 检查单元格引用:验证范围是否正确 调用EvaluateAll():在保存前需要调用以查看结果 验证数据类型:确保数字单元格包含数字,而不是文本 EvaluateAll()方法处理所有公式,更新整个工作簿中的计算值。 这将确保公式在 Excel 中打开时显示结果。 如果不进行评估,Excel 将显示公式,直到用户触发重新计算。 对于涉及C#中的Excel公式的复杂场景,IronXL提供全面支持。 输出 预算工作表自动计算总计和百分比的活跃公式。 如何将数据从数据库导出到Excel? 数据库到Excel导出的最佳实践是什么? 现实世界中的应用程序通常会将数据库数据导出到 Excel 中,用于报告和分析。 IronXL通过内置DataTable支持简化了这一过程,在C#应用程序中生成Excel文件时消除了手动字段映射。 该库提供多种数据库集成方法和DataGrid兼容性。 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"); 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"); $vbLabelText $csharpLabel 如何优化大型数据库导出? 这个全面的示例演示了使用 C# 生成 Excel 文件的完整数据库到 Excel 工作流程。 DataTable模拟数据库检索——在生产中,使用Entity Framework、Dapper或ADO.NET替换为实际的数据库查询。 对于直接SQL集成,请探索从SQL数据库加载Excel或从Excel更新数据库记录。 对于大型数据库导出,请考虑: 批处理:分块导出以管理内存 异步操作:导出时保持UI响应 进度报告:向用户显示导出进度 错误处理:优雅处理数据库超时 代码会创建一个带有标题、格式化标题和数据行的专业报告。 公式列动态计算行总数。 摘要部分利用Excel公式计数订单并计算收入,确保这些值在数据更改时更新。 对于使用DataTables时,请参阅《导出数据集数据表》指南。 输出 从数据库数据生成的专业销售报告,具有自动计算和格式化。 需要简化 Excel 报告? 获取许可证以解锁IronXL的全部潜力,以便在生产中部署。 如何处理多个工作表? 何时应使用多工作表工作簿? 复杂的 Excel 文件通常需要多个工作表来组织相关数据。IronXL通过创建、访问和组织工作表的直观方法简化了多工作表管理。 了解更多关于管理工作表和复制工作表数据的内容,适用于高级场景。 // 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"); // 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"); $vbLabelText $csharpLabel 如何跨多个工作表引用数据? 本示例创建了一份完整的多页报告。 每个工作表都有特定的用途:销售数据、库存跟踪和人力资源指标。 汇总表使用跨表公式合并关键指标。 注意公式中的工作表引用语法——"Sales!B4:B7"引用销售表上的B4到B7单元格。 对于更复杂的操作,探索组合Excel范围和分组和取消分组行和列。 库存表展示了条件逻辑,将低库存商品染成红色,以便立即引起注意。 foreach 循环在所有工作表中应用一致的格式,保持整个工作簿的专业外观。 工作表名称显示为Excel中的选项卡,允许用户轻松在不同数据视图之间导航。 对于高级场景,考虑添加冻结窗格以在滚动浏览大型数据集时保持标题可见。 Excel 生成的最佳实践是什么? 如何确保在生产中实现可扩展的Excel生成? 在 C# 中高效生成 Excel 文件需要在内存使用、错误处理和部署方面考虑周到。 在以编程方式创建 Excel 电子表格时,这些实践可确保您的应用程序有效扩展,同时保持可靠性。 查看安全最佳实践和文件保护选项,适用于企业部署。 对于大文件,内存管理变得至关重要。 分块处理数据,而不是将整个数据集加载到内存中: // 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); } // 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); } $vbLabelText $csharpLabel 对于DevOps团队,常见问题是什么? 问题 解决方案 预防 内存不足 分批处理 监控批处理大小 文件锁定 使用流而非文件 实施适当的资源释放 许可证错误 在代码中验证许可证 正确应用许可证 性能 启用异步操作 分析瓶颈 容器问题 安装依赖项 在本地Docker中测试 错误处理可防止应用程序崩溃,并在生成 Excel 文件时提供有意义的反馈: 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 } 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 } $vbLabelText $csharpLabel 对于网络应用程序,在内存中生成Excel文件并流式传输给用户。 这种方法完美适用于ASP.NET MVC应用程序: // 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"); } // 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"); } $vbLabelText $csharpLabel 如何为容器部署配置IronXL? 部署方面的考虑因素可确保生产运营的顺利进行。IronXL可在受限环境中工作,无需提升权限,因此适合共享主机和容器化部署。 在部署包中包含IronXL许可证文件,并确保您的应用程序在需要时具有临时文件操作的写入权限。 有关正确的许可证配置,请参阅使用许可证密钥和web.config设置。 对于Docker部署: FROM mcr.microsoft.com/dotnet/runtime:8.0 WORKDIR /app COPY . . #安装依赖项for Excel operations RUN apt-get update && apt-get install -y libgdiplus ENV IRONXL_LICENSE_KEY=${IRONXL_LICENSE_KEY} ENTRYPOINT ["dotnet", "YourApp.dll"] 处理敏感数据时,考虑密码保护工作簿和保护工作表。 IronXL提供全面的安全功能以保护您的Excel文件免遭未经授权的访问。 为了在处理大型文件时获得最佳性能,请实施数据修剪和单元格清除策略,以有效管理文件大小。 对于Linux部署,请确保按照Linux设置指南正确配置。 部署到AWS Lambda时,请参阅AWS部署指南以获取无服务器特定的配置。 本指南后的下一步是什么? IronXL 将 Excel 文件在 C# 中的生成从一个复杂的挑战转变为简单明了的编码。 您已经学会了创建工作簿、填充单元格、应用格式化、使用公式和导出数据库数据--所有这一切都无需依赖 Microsoft Office。 这些以编程方式生成 Excel 文件的技术可在 Windows、Linux 和云平台上一致运行。 对于高级功能,请探索: 创建Excel图表以实现数据的可视化表示 添加图片以增强报告 使用超链接创建交互式文档 Excel打印设置以获得专业输出 转换电子表格文件类型以获得最大兼容性 准备好在您的 C# 应用程序中实现 Excel 生成了吗? 开始您的免费试用或探索全面的API文档以获取高级功能。 对于生产部署,请查看许可证选项以满足您的项目需求。 考虑根据需求增长扩展许可证扩展和升级路径。 灵活的许可选项可满足从开发到企业部署的Excel生成需求。 常见问题解答 什么是 IronXL? IronXL是一个库,允许开发人员在C#中创建、读取和编辑Excel文件,而不需要Microsoft Office或复杂的COM Interop。 如何使用C#生成Excel文件? 你可以使用IronXL在C#中生成Excel文件,它提供了一个简单的API来创建、格式化和编程操作Excel文件。 我需要安装 Microsoft Office 来使用 IronXL 吗? 不,IronXL不需要在你的系统上安装Microsoft Office,是一个轻量级的创建和编辑Excel文件的解决方案。 IronXL可以处理高级Excel格式化吗? 是的,IronXL支持高级格式选项,允许你在电子表格中应用样式、格式和其他Excel功能。 是否可以通过IronXL将数据库与Excel文件集成? 是的,IronXL使你能够将Excel文件与数据库集成,方便如数据导出和直接从C#应用程序报告的任务。 IronXL可以处理哪些文件格式? IronXL可以处理XLS和XLSX文件格式,提供了处理Excel文件的灵活性。 我可以用IronXL自动化电子表格生成吗? 是的,IronXL允许你自动化生成电子表格,非常适合如报告创建和数据导出等任务。 IronXL支持.NET应用程序吗? IronXL完全兼容.NET应用程序,允许在你的C#项目中无缝集成和功能。 IronXL 的一些常见用例是什么? IronXL的常见用例包括创建报表、导出数据、自动化电子表格任务,以及在.NET应用程序中集成Excel功能。 IronXL如何简化C#中的Excel文件创建? IronXL通过提供一个简单直观的API简化Excel文件创建,消除复杂设置和依赖,简化开发过程。 Curtis Chau 立即与工程团队聊天 技术作家 Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。 相关文章 已更新2026年3月1日 在.NET C# 中下载 Excel 文件:将数据导出为 XLSX、CSV 等格式 使用 C# 和IronXL在ASP.NET Core中下载 Excel 文件。从 MVC 控制器导出数据到 XLSX、CSV 和 XML 格式,并返回 MemoryStream 和 File() 函数。包含代码示例。 阅读更多 已更新2026年3月1日 如何在Blazor中使用IronXL导出 Excel 文件 学习如何使用IronXL在Blazor Server 应用程序中将数据导出到 Excel。本指南涵盖项目设置、服务设计、条件格式设置、多工作表报表和错误处理,并提供完整的 C# 代码示例。 阅读更多 已更新2026年2月27日 如何在 C# 中读取 Excel 文件而不是使用 StreamReader 了解为什么 StreamReader 无法读取 Excel 文件,以及如何在 C# .NET中使用IronXL从磁盘或内存流加载 XLSX 和 XLS 工作簿。 阅读更多 如何在 C# 中写入 CSV 文件如何使用IronXL在 C# 中创建 ...
已更新2026年3月1日 在.NET C# 中下载 Excel 文件:将数据导出为 XLSX、CSV 等格式 使用 C# 和IronXL在ASP.NET Core中下载 Excel 文件。从 MVC 控制器导出数据到 XLSX、CSV 和 XML 格式,并返回 MemoryStream 和 File() 函数。包含代码示例。 阅读更多
已更新2026年3月1日 如何在Blazor中使用IronXL导出 Excel 文件 学习如何使用IronXL在Blazor Server 应用程序中将数据导出到 Excel。本指南涵盖项目设置、服务设计、条件格式设置、多工作表报表和错误处理,并提供完整的 C# 代码示例。 阅读更多
已更新2026年2月27日 如何在 C# 中读取 Excel 文件而不是使用 StreamReader 了解为什么 StreamReader 无法读取 Excel 文件,以及如何在 C# .NET中使用IronXL从磁盘或内存流加载 XLSX 和 XLS 工作簿。 阅读更多