跳至页脚内容
使用 IRONXL

使用IronXL在 C# 中将数据集导出到 Excel | 无需 Office

在 C# 中将 DataSet 或 DataTable 导出到 Excel,无需目标计算机上安装 Microsoft Office,即可可靠地将结构化的内存数据转换为专业的电子表格文件。无论您是从 SQL 数据库中提取记录、以编程方式构建 DataSet,还是使用现有的 DataGrid, IronXL都能通过简洁的代码优先 API 处理整个流程。 本指南将逐步介绍所有主要场景——从单表导出到多工作表工作簿,再到实时数据库查询结果——使用顶级 C# 语句和.NET 10。

只需安装一次IronXL ,编写几行代码,您的数据就会保存在 XLSX 文件中,而无需任何 Office 依赖项。 以下各节涵盖安装、核心模式、高级格式设置和数据库集成,您可以直接复制粘贴到自己的项目中。

如何安装IronXL以导出 Excel 文件?

在编写任何导出代码之前,请通过NuGet包管理器将IronXL添加到您的项目中。 在项目根目录下打开终端并运行.NET CLI 命令,或者在 Visual Studio 中使用包管理器控制台并运行 Install-Package 命令:

dotnet add package IronXl.Excel
# Or in Visual Studio Package Manager Console:
# Install-Package IronXl.Excel
dotnet add package IronXl.Excel
# Or in Visual Studio Package Manager Console:
# Install-Package IronXl.Excel
SHELL

安装完成后,添加一个顶层 using 语句来导入IronXL命名空间:

using IronXL;
using System.Data;
using IronXL;
using System.Data;
$vbLabelText   $csharpLabel

IronXL 的目标平台包括.NET 8、 .NET 9 和.NET 10,以及较旧的.NET Framework版本(4.6.2+)。 无需在任何机器(服务器、台式机或云端)上安装 Office。 安装该软件包后,您就可以完全通过托管代码创建、读取和写入 XLSX、XLS 和 CSV 文件。

有关详细的安装选项,请参阅IronXL安装指南NuGet包页面以获取版本历史记录。

如何将单个数据表导出到 Excel 文件?

最常见的情况是将一个数据表导出到单个工作表中。 IronXL 的 WorkBookWorkSheet 类可以自然地映射到 Excel 对象模型。 您创建一个工作簿,添加一个工作表,然后遍历数据表的列和行。

以下示例创建一个内存中的 Employees 数据表,并将其写入 EmployeeData.xlsx:

using IronXL;
using System.Data;

// Build an in-memory DataTable
DataTable dt = new DataTable("Employees");
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Department", typeof(string));

dt.Rows.Add(1, "John Smith", "Engineering");
dt.Rows.Add(2, "Sarah Jones", "Marketing");
dt.Rows.Add(3, "Mike Wilson", "Sales");

// Create a workbook and a named worksheet
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet worksheet = workbook.CreateWorkSheet("Employees");

// Write column headers in row 0
for (int col = 0; col < dt.Columns.Count; col++)
{
    worksheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
}

// Write data rows starting at row 1
for (int row = 0; row < dt.Rows.Count; row++)
{
    for (int col = 0; col < dt.Columns.Count; col++)
    {
        worksheet.SetCellValue(row + 1, col, dt.Rows[row][col].ToString());
    }
}

workbook.SaveAs("EmployeeData.xlsx");
using IronXL;
using System.Data;

// Build an in-memory DataTable
DataTable dt = new DataTable("Employees");
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Department", typeof(string));

dt.Rows.Add(1, "John Smith", "Engineering");
dt.Rows.Add(2, "Sarah Jones", "Marketing");
dt.Rows.Add(3, "Mike Wilson", "Sales");

// Create a workbook and a named worksheet
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet worksheet = workbook.CreateWorkSheet("Employees");

// Write column headers in row 0
for (int col = 0; col < dt.Columns.Count; col++)
{
    worksheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
}

// Write data rows starting at row 1
for (int row = 0; row < dt.Rows.Count; row++)
{
    for (int col = 0; col < dt.Columns.Count; col++)
    {
        worksheet.SetCellValue(row + 1, col, dt.Rows[row][col].ToString());
    }
}

workbook.SaveAs("EmployeeData.xlsx");
$vbLabelText   $csharpLabel

输出

如何使用.NET将数据集导出到 Excel: IronXL完整指南:图 1 - .NET中将简单 DataTable 导出到 Excel 的输出

SetCellValue 接受 int、double、string 和 bool 类型 -- 因此您可以获得原生的 Excel 单元格类型,而无需额外的类型转换。 循环模式适用于任何大小的表,因为IronXL直接写入内存,只有在调用 SaveAs 时才刷新到磁盘,即使对于数千行数据,也能保持高效的处理速度。

要更全面地了解读写技术, IronXL C# 教程涵盖了所有文件操作以及这种导出模式。

如何将数据集导出到多个Excel工作表中?

当一个数据集包含多个相关表(例如产品表和订单表)时,您可以将每个数据表映射到一个工作簿中的相应工作表。 这样,收件人无需打开多个文档,即可在一个文件中查看所有相关数据。

下面的循环遍历 ds.Tables,并为每个表格创建一个工作表:

using IronXL;
using System.Data;

// Build a DataSet with two related tables
DataSet ds = new DataSet("CompanyData");

DataTable dtProducts = new DataTable("Products");
dtProducts.Columns.Add("ProductID", typeof(int));
dtProducts.Columns.Add("ProductName", typeof(string));
dtProducts.Columns.Add("Price", typeof(decimal));
dtProducts.Rows.Add(101, "Widget A", 29.99m);
dtProducts.Rows.Add(102, "Widget B", 49.99m);
ds.Tables.Add(dtProducts);

DataTable dtOrders = new DataTable("Orders");
dtOrders.Columns.Add("OrderID", typeof(int));
dtOrders.Columns.Add("Customer", typeof(string));
dtOrders.Columns.Add("Total", typeof(decimal));
dtOrders.Rows.Add(1001, "Acme Corp", 599.90m);
dtOrders.Rows.Add(1002, "Tech Inc", 299.95m);
ds.Tables.Add(dtOrders);

// Create one workbook and iterate each DataTable
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);

foreach (DataTable table in ds.Tables)
{
    WorkSheet sheet = workbook.CreateWorkSheet(table.TableName);

    // Write headers
    for (int col = 0; col < table.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, table.Columns[col].ColumnName);
    }

    // Write rows
    for (int row = 0; row < table.Rows.Count; row++)
    {
        for (int col = 0; col < table.Columns.Count; col++)
        {
            sheet.SetCellValue(row + 1, col, table.Rows[row][col].ToString());
        }
    }
}

workbook.SaveAs("CompanyReport.xlsx");
using IronXL;
using System.Data;

// Build a DataSet with two related tables
DataSet ds = new DataSet("CompanyData");

DataTable dtProducts = new DataTable("Products");
dtProducts.Columns.Add("ProductID", typeof(int));
dtProducts.Columns.Add("ProductName", typeof(string));
dtProducts.Columns.Add("Price", typeof(decimal));
dtProducts.Rows.Add(101, "Widget A", 29.99m);
dtProducts.Rows.Add(102, "Widget B", 49.99m);
ds.Tables.Add(dtProducts);

DataTable dtOrders = new DataTable("Orders");
dtOrders.Columns.Add("OrderID", typeof(int));
dtOrders.Columns.Add("Customer", typeof(string));
dtOrders.Columns.Add("Total", typeof(decimal));
dtOrders.Rows.Add(1001, "Acme Corp", 599.90m);
dtOrders.Rows.Add(1002, "Tech Inc", 299.95m);
ds.Tables.Add(dtOrders);

// Create one workbook and iterate each DataTable
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);

foreach (DataTable table in ds.Tables)
{
    WorkSheet sheet = workbook.CreateWorkSheet(table.TableName);

    // Write headers
    for (int col = 0; col < table.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, table.Columns[col].ColumnName);
    }

    // Write rows
    for (int row = 0; row < table.Rows.Count; row++)
    {
        for (int col = 0; col < table.Columns.Count; col++)
        {
            sheet.SetCellValue(row + 1, col, table.Rows[row][col].ToString());
        }
    }
}

workbook.SaveAs("CompanyReport.xlsx");
$vbLabelText   $csharpLabel

输出

如何将数据集导出到 Excel VB .NET: IronXL完整指南:图 2 - 生成的 Excel 文件,其中包含导出的数据集作为单独的工作表

每个工作表都以源数据表命名,使得在 Excel 中导航变得非常简单。 因为 WorkBook.Create 在内存中分配工作簿,所以您可以在循环中不断添加工作表而无需重新打开文件 -- IronXL在写入磁盘之前构建整个 XLSX 结构。

IronXL WorkBook 文档列出了 WorkBook 对象上的所有可用方法,包括工作表重新排序、密码保护以及保存为 XLSX 以外的格式。

如何在Excel导出文件中添加标题格式?

纯文本数据导出功能正常,但添加粗体标题和列宽后,输出结果即可立即在业务环境中使用。 IronXL通过附加到任何 WorkSheet 范围的 Style 对象公开单元格和范围样式。

以下代码片段将标题行的字体格式设置为粗体,并在写入数据后自动调整列宽:

using IronXL;
using System.Data;

DataTable dt = new DataTable("Sales");
dt.Columns.Add("Region", typeof(string));
dt.Columns.Add("Q1", typeof(decimal));
dt.Columns.Add("Q2", typeof(decimal));
dt.Columns.Add("Q3", typeof(decimal));
dt.Columns.Add("Q4", typeof(decimal));

dt.Rows.Add("无rth", 120000m, 135000m, 142000m, 158000m);
dt.Rows.Add("South", 98000m, 104000m, 112000m, 121000m);
dt.Rows.Add("East",  87000m, 93000m,  99000m,  108000m);
dt.Rows.Add("West",  145000m, 152000m, 161000m, 174000m);

WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("Sales");

// Write and style headers
for (int col = 0; col < dt.Columns.Count; col++)
{
    sheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
    sheet["A1:E1"].Style.Font.Bold = true;
    sheet["A1:E1"].Style.Font.Height = 12;
}

// Write data rows
for (int row = 0; row < dt.Rows.Count; row++)
{
    for (int col = 0; col < dt.Columns.Count; col++)
    {
        sheet.SetCellValue(row + 1, col, dt.Rows[row][col]);
    }
}

workbook.SaveAs("SalesReport.xlsx");
using IronXL;
using System.Data;

DataTable dt = new DataTable("Sales");
dt.Columns.Add("Region", typeof(string));
dt.Columns.Add("Q1", typeof(decimal));
dt.Columns.Add("Q2", typeof(decimal));
dt.Columns.Add("Q3", typeof(decimal));
dt.Columns.Add("Q4", typeof(decimal));

dt.Rows.Add("无rth", 120000m, 135000m, 142000m, 158000m);
dt.Rows.Add("South", 98000m, 104000m, 112000m, 121000m);
dt.Rows.Add("East",  87000m, 93000m,  99000m,  108000m);
dt.Rows.Add("West",  145000m, 152000m, 161000m, 174000m);

WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("Sales");

// Write and style headers
for (int col = 0; col < dt.Columns.Count; col++)
{
    sheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
    sheet["A1:E1"].Style.Font.Bold = true;
    sheet["A1:E1"].Style.Font.Height = 12;
}

// Write data rows
for (int row = 0; row < dt.Rows.Count; row++)
{
    for (int col = 0; col < dt.Columns.Count; col++)
    {
        sheet.SetCellValue(row + 1, col, dt.Rows[row][col]);
    }
}

workbook.SaveAs("SalesReport.xlsx");
$vbLabelText   $csharpLabel

Style.Font.Bold 属性适用于单个语句中的整个标头范围。 IronXL还支持背景颜色(Style.HorizontalAlignment)。 有关完整的样式参考,请参阅IronXL单元格格式指南

如何将数据库查询结果导出到 Excel?

连接到 SQL 数据库并将结果直接导出到 Excel 涵盖了一个重要的实际应用场景——定期报告、数据快照和管理导出。 该方法使用 SqlDataAdapter 填充 DataSet,然后将生成的 DataTable 映射到IronXL工作表。

using IronXL;
using System.Data;
using System.Data.SqlClient;

string connectionString = "Server=localhost;Database=SalesDB;Integrated Security=True;";
string query = "SELECT CustomerID, CompanyName, ContactName, Country FROM Customers";

// Fill DataSet from SQL query
DataSet ds = new DataSet();
using (SqlConnection connection = new SqlConnection(connectionString))
{
    SqlDataAdapter adapter = new SqlDataAdapter(query, connection);
    adapter.Fill(ds, "Customers");
}

DataTable dt = ds.Tables["Customers"]!;

// Create workbook and export
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet worksheet = workbook.CreateWorkSheet("CustomerData");

// Bold header row
for (int col = 0; col < dt.Columns.Count; col++)
{
    worksheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
}
worksheet["A1:D1"].Style.Font.Bold = true;

// Write rows, handling DBNull values safely
for (int row = 0; row < dt.Rows.Count; row++)
{
    for (int col = 0; col < dt.Columns.Count; col++)
    {
        object cellValue = dt.Rows[row][col];
        worksheet.SetCellValue(row + 1, col,
            cellValue == DBNull.Value ? "" : cellValue.ToString()!);
    }
}

workbook.SaveAs("CustomerExport.xlsx");
Console.WriteLine("Export complete.");
using IronXL;
using System.Data;
using System.Data.SqlClient;

string connectionString = "Server=localhost;Database=SalesDB;Integrated Security=True;";
string query = "SELECT CustomerID, CompanyName, ContactName, Country FROM Customers";

// Fill DataSet from SQL query
DataSet ds = new DataSet();
using (SqlConnection connection = new SqlConnection(connectionString))
{
    SqlDataAdapter adapter = new SqlDataAdapter(query, connection);
    adapter.Fill(ds, "Customers");
}

DataTable dt = ds.Tables["Customers"]!;

// Create workbook and export
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet worksheet = workbook.CreateWorkSheet("CustomerData");

// Bold header row
for (int col = 0; col < dt.Columns.Count; col++)
{
    worksheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
}
worksheet["A1:D1"].Style.Font.Bold = true;

// Write rows, handling DBNull values safely
for (int row = 0; row < dt.Rows.Count; row++)
{
    for (int col = 0; col < dt.Columns.Count; col++)
    {
        object cellValue = dt.Rows[row][col];
        worksheet.SetCellValue(row + 1, col,
            cellValue == DBNull.Value ? "" : cellValue.ToString()!);
    }
}

workbook.SaveAs("CustomerExport.xlsx");
Console.WriteLine("Export complete.");
$vbLabelText   $csharpLabel

数据库导出要点

空值守卫(cellValue == DBNull.Value ? "" : cellValue.ToString()) prevents exceptions when the database returns NULL 值 -- 可选列中常见的情况。 标题行采用粗体格式,可以让报告接收者立即区分标题和数据。

有关如何将数据从 Excel 读回 C# 对象的更多信息,请参阅IronXL DataTable 导出教程,了解如何逆转此工作流程。

IronXL与其他 Excel 导出方法相比有何优势?

在选择库之前,了解主要选项在数据集导出场景中最重要方面的优劣对比很有帮助。

.NET数据集场景的 Excel 导出库比较
方法 办公室要求 XLSX 支持 样式 API 多页 性能(大数据)
IronXL 满的 高的
Microsoft Office Interop 满的 低的
EPPlus 部分的 高的
ClosedXML 部分的 中等的
CSV(手动) 非常高

Microsoft Office Interop 仅适用于安装了 Office 的 Windows 机器,因此无法用于服务器部署和云功能。 IronXL、EPPlus 和 ClosedXML 都支持服务器端生成——关键区别在于样式 API 的广度和许可模式。 IronXL 的许可涵盖商业用途,并且通过单个软件包即可覆盖所有.NET目标框架。

对于第三方基准测试和比较, Microsoft 关于 Excel 文件格式的文档EPPlus 项目页面提供了更多背景信息,以便为您的项目做出正确的选择。

如何处理大型数据集而不出现内存问题?

导出包含数万行数据的数据表时,保持内存使用量可预测非常重要。 以下模式直接从 IDataReader 流式传输数据,而不是先将整个结果集加载到 DataTable 中。这样可以避免同时保存读取缓冲区和 DataTable 而造成的双倍内存开销。

using IronXL;
using System.Data;
using System.Data.SqlClient;

string connectionString = "Server=localhost;Database=InventoryDB;Integrated Security=True;";
string query = "SELECT ProductID, SKU, Description, StockLevel, UnitCost FROM Products";

WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("Inventory");

using SqlConnection conn = new SqlConnection(connectionString);
conn.Open();

using SqlCommand cmd = new SqlCommand(query, conn);
using SqlDataReader reader = cmd.ExecuteReader();

// Write schema-derived headers
for (int col = 0; col < reader.FieldCount; col++)
{
    sheet.SetCellValue(0, col, reader.GetName(col));
}

// Stream rows directly into IronXL without buffering a DataTable
int excelRow = 1;
while (reader.Read())
{
    for (int col = 0; col < reader.FieldCount; col++)
    {
        sheet.SetCellValue(excelRow, col,
            reader.IsDBNull(col) ? "" : reader.GetValue(col).ToString()!);
    }
    excelRow++;
}

workbook.SaveAs("InventoryExport.xlsx");
Console.WriteLine($"Exported {excelRow - 1} rows.");
using IronXL;
using System.Data;
using System.Data.SqlClient;

string connectionString = "Server=localhost;Database=InventoryDB;Integrated Security=True;";
string query = "SELECT ProductID, SKU, Description, StockLevel, UnitCost FROM Products";

WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("Inventory");

using SqlConnection conn = new SqlConnection(connectionString);
conn.Open();

using SqlCommand cmd = new SqlCommand(query, conn);
using SqlDataReader reader = cmd.ExecuteReader();

// Write schema-derived headers
for (int col = 0; col < reader.FieldCount; col++)
{
    sheet.SetCellValue(0, col, reader.GetName(col));
}

// Stream rows directly into IronXL without buffering a DataTable
int excelRow = 1;
while (reader.Read())
{
    for (int col = 0; col < reader.FieldCount; col++)
    {
        sheet.SetCellValue(excelRow, col,
            reader.IsDBNull(col) ? "" : reader.GetValue(col).ToString()!);
    }
    excelRow++;
}

workbook.SaveAs("InventoryExport.xlsx");
Console.WriteLine($"Exported {excelRow - 1} rows.");
$vbLabelText   $csharpLabel

当结果集可能超过 50,000 行或在内存受限的服务中运行时,建议使用此模式。IronXL IronXL文档涵盖了针对大容量导出任务的其他内存和吞吐量调优选项。

批量保存为 CSV 文件,适用于超大文件导出

对于超过 50 万行且内存非常紧张的导出操作,请考虑将输出拆分到多个工作簿中,或者改为导出为 CSV 格式:

using IronXL;

// IronXL can save any workbook as CSV
workbook.SaveAs("LargeExport.csv");
using IronXL;

// IronXL can save any workbook as CSV
workbook.SaveAs("LargeExport.csv");
$vbLabelText   $csharpLabel

CSV 文件会丢失格式和多工作表支持,但对于使用原始分隔数据的下游 ETL 流程仍然有效。

如何将Excel文件保存为不同的格式和位置?

IronXL支持保存到文件路径,MemoryStreambyte[] -- 这对于返回 Excel 作为下载响应的ASP.NET应用程序来说很重要。

using IronXL;
using System.IO;

WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("Report");
sheet.SetCellValue(0, 0, "Generated Report");

// Save to file path
workbook.SaveAs("Report.xlsx");

// Save as XLS (legacy format)
workbook.SaveAs("Report.xls");

// Save to MemoryStream for HTTP response
using MemoryStream ms = new MemoryStream();
workbook.SaveAs(ms);
byte[] fileBytes = ms.ToArray();
// fileBytes can be returned from an ASP.NET controller action
using IronXL;
using System.IO;

WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("Report");
sheet.SetCellValue(0, 0, "Generated Report");

// Save to file path
workbook.SaveAs("Report.xlsx");

// Save as XLS (legacy format)
workbook.SaveAs("Report.xls");

// Save to MemoryStream for HTTP response
using MemoryStream ms = new MemoryStream();
workbook.SaveAs(ms);
byte[] fileBytes = ms.ToArray();
// fileBytes can be returned from an ASP.NET controller action
$vbLabelText   $csharpLabel

对于ASP.NET Core,从控制器操作返回 File(fileBytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Report.xlsx") 以触发浏览器下载。 IronXL ASP.NET Excel 指南展示了完整的控制器集成模式。

对于其他.NET Excel 库, Open XML SDK是许多库构建的开源基础。

支持的输出格式

IronXL无需任何其他依赖项即可保存为以下格式:

  • XLSX -- OpenXML 格式,兼容 Excel 2007 及更高版本
  • XLS -- 传统二进制格式,兼容 Excel 97-2003
  • CSV——逗号分隔值,全球通用格式
  • TSV -- 制表符分隔值
  • JSON -- 结构化数据导出

通过更改 SaveAs 路径中的文件扩展名或使用接受 ExcelFileFormat 枚举值的重载方法来切换格式。

如何验证导出的Excel文件是否正确?

导出后,您可以使用IronXL读取文件,以验证行数、抽查值或在测试项目中运行自动断言:

using IronXL;

WorkBook loaded = WorkBook.Load("EmployeeData.xlsx");
WorkSheet sheet = loaded.WorkSheets[0];

// Verify row count (header row + data rows)
int totalRows = sheet.Rows.Count();
Console.WriteLine($"Rows in file: {totalRows}");

// Spot-check specific cell values
string header = sheet["A1"].StringValue;
string firstEmployee = sheet["A2"].StringValue;

Console.WriteLine($"Header: {header}, First row: {firstEmployee}");
using IronXL;

WorkBook loaded = WorkBook.Load("EmployeeData.xlsx");
WorkSheet sheet = loaded.WorkSheets[0];

// Verify row count (header row + data rows)
int totalRows = sheet.Rows.Count();
Console.WriteLine($"Rows in file: {totalRows}");

// Spot-check specific cell values
string header = sheet["A1"].StringValue;
string firstEmployee = sheet["A2"].StringValue;

Console.WriteLine($"Header: {header}, First row: {firstEmployee}");
$vbLabelText   $csharpLabel

这种验证模式在集成测试套件中特别有用,因为在将文件发送到外部系统之前必须确认导出正确性。 IronXL读取教程展示了加载文件后可用的所有读取操作。

有关.NET中 DataSet 和 DataTable 模式的更多阅读资料,请参阅Microsoft DataSet 文档,其中深入介绍了 ADO .NET对象模型。

下一步计划是什么?

现在,您已经拥有了 C# 中所有主要数据集到 Excel 导出场景的工作模式——从单个 DataTable 到多工作表工作簿、数据库驱动的导出、格式化标题和大数据流。 根据您的目标,接下来该如何做:

-免费试用IronXL -- 先获取免费试用许可证,并在投入生产之前使用您自己的数据运行上述示例。 -阅读完整的 API 参考-- IronXL对象参考涵盖了 WorkBook、WorkSheet 和单元格区域的每个方法。 -探索相关的导出教程-- C# DataTable 到 Excel 指南涵盖了反向工作流程 -- 将 Excel 读回 DataTable 对象。 -查看格式设置选项-- IronXL单元格格式设置文档显示了数字格式、边框、背景颜色和对齐方式选项。 -检查许可-- 对于生产部署,请参阅IronXL许可页面,在开发者、组织和免版税选项之间进行选择。 -与其他Iron Software工具比较-- 如果您的项目还需要生成 PDF 或 OCR, Iron Software产品套件可以让您以更低的价格捆绑多个库。

基于这里介绍的模式,您可以完全在托管的 C# 中分层添加计划任务自动化、 ASP.NET Core下载端点和多格式输出管道——无需 Office、无需 COM、无需NuGet包之外的运行时依赖项。

常见问题解答

如何使用 C# 将数据集导出到 Excel?

您可以使用IronXL库在 C# 中将数据集导出到 Excel,该库提供了一个代码优先的 API,用于创建、编辑和操作 Excel 文件,而无需 Microsoft Office。

我需要安装 Microsoft Office 来使用 IronXL 吗?

不, IronXL不需要在计算机上安装 Microsoft Office 即可导出或处理 Excel 文件。

我可以使用IronXL导出哪些类型的数据?

IronXL允许您将结构化数据(例如 DataTables 和 DataSets)导出到 Excel 文件,以及从 SqlDataReader 和其他.NET源导出数据。

IronXL能否处理 Excel 文件的创建和编辑?

是的, IronXL提供了使用 C# 以编程方式创建、编辑和操作 Excel 文件的功能。

IronXL是否适用于服务器端和云应用程序?

是的, IronXL非常适合需要在不安装任何 Office 的情况下生成 Excel 文件的服务器端应用程序和云函数。

使用IronXL导出数据集有哪些好处?

IronXL无需 Microsoft Office 等外部依赖项即可处理 Excel 文件的创建和操作,支持 XLSX、XLS 和 CSV 格式,并且可以在所有.NET目标框架上运行。

IronXL能否在ASP.NET Core中使用以返回 Excel 下载文件?

是的, IronXL可以将工作簿保存到 MemoryStream 中,生成的字节数组可以从ASP.NET Core控制器操作作为文件下载返回。

IronXL是否支持大型数据集?

是的, IronXL可以直接从 SqlDataReader 流式传输数据,而无需缓冲整个 DataTable,从而保持大型结果集的内存使用量可预测。

IronXL支持保存哪些 Excel 格式?

IronXL支持保存为 XLSX、XLS、CSV、TSV 和 JSON 格式,无需任何额外依赖项。

导出到 Excel 时,我可以应用粗体标题等格式吗?

是的, IronXL为单元格区域提供了样式 API,用于设置粗体字体、背景颜色、边框、数字格式和对齐方式。

Curtis Chau
技术作家

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

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me