0

0

C#怎么将DataTable导出到Excel C#不依赖Office组件导出数据的方法

幻夢星雲

幻夢星雲

发布时间:2025-11-20 18:08:02

|

523人浏览过

|

来源于php中文网

原创

推荐使用NPOI、ClosedXML、EPPlus或CSV方式导出DataTable到Excel。NPOI兼容XLS/XLSX且无需Office组件,ClosedXML语法简洁易用,EPPlus支持高级格式功能强大,CSV方式最轻量高效。四种方法均不依赖Office,部署方便,适用于不同场景需求。

c#怎么将datatable导出到excel c#不依赖office组件导出数据的方法

在C#中将DataTable导出到Excel,且不依赖Office组件(如Microsoft.Office.Interop.Excel),推荐使用第三方开源库来实现高效、稳定的数据导出。以下介绍几种主流方法,并提供完整示例代码。

使用 NPOI 库导出 DataTable 到 Excel

NPOI 是 .NET 平台下最流行的无需安装 Office 即可操作 Excel 的开源库,支持读写 XLS 和 XLSX 格式。

步骤如下:
  • 通过 NuGet 安装 NPOI:Install-Package NPOI
  • 创建工作簿和工作表
  • 遍历 DataTable 的列名和行数据写入单元格
  • 将文件保存到磁盘或输出为流

示例代码:

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.Data;
using System.IO;

public void ExportDataTableToExcel(DataTable dt, string filePath)
{
    IWorkbook workbook = new XSSFWorkbook(); // 创建一个支持 .xlsx 的工作簿
    ISheet sheet = workbook.CreateSheet("Sheet1");

    // 创建表头
    IRow headerRow = sheet.CreateRow(0);
    for (int i = 0; i < dt.Columns.Count; i++)
    {
        headerRow.CreateCell(i).SetCellValue(dt.Columns[i].ColumnName);
    }

    // 填充数据行
    for (int i = 0; i < dt.Rows.Count; i++)
    {
        IRow dataRow = sheet.CreateRow(i + 1);
        for (int j = 0; j < dt.Columns.Count; j++)
        {
            dataRow.CreateCell(j).SetCellValue(dt.Rows[i][j]?.ToString() ?? "");
        }
    }

    // 自动调整列宽
    for (int i = 0; i < dt.Columns.Count; i++)
    {
        sheet.AutoSizeColumn(i);
    }

    // 保存到文件
    using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
    {
        workbook.Write(fs);
    }
}

使用 ClosedXML 导出(更简洁语法)

ClosedXML 封装了底层复杂性,提供类似 Excel 对象模型的易用接口,基于 OpenXML 开发,仅支持 .xlsx 文件。

NuGet 安装:Install-Package ClosedXML

示例代码:

using ClosedXML.Excel;
using System.Data;

public void ExportWithClosedXML(DataTable dt, string filePath)
{
    using (var wb = new XLWorkbook())
    {
        wb.Worksheets.Add(dt, "数据表");
        wb.SaveAs(filePath);
    }
}

非常简洁,一行代码即可将 DataTable 添加为工作表。

Rose.ai
Rose.ai

一个云数据平台,帮助用户发现、可视化数据

下载

使用 EPPlus(功能强大,适用于复杂场景)

EPPlus 支持公式、图表、样式、条件格式等高级功能,适合需要格式化输出的场景。

NuGet 安装:Install-Package EPPlus

注意:从 v5 起需遵守 Polyform Non-Commercial 许可用于非商业项目。

using OfficeOpenXml;
using System.Data;

public void ExportWithEPPlus(DataTable dt, string filePath)
{
    ExcelPackage.LicenseContext = LicenseContext.NonCommercial; // 设置许可上下文

    using (var package = new ExcelPackage())
    {
        var worksheet = package.Workbook.Worksheets.Add("数据");
        worksheet.Cells["A1"].LoadFromDataTable(dt, true); // true 表示包含标题
        File.WriteAllBytes(filePath, package.GetAsByteArray());
    }
}

直接生成 CSV(最轻量方式)

如果不需要复杂格式,可导出为 CSV 文件,兼容 Excel 打开,性能高且无需引用任何库。

using System.IO;
using System.Text;

public void ExportToCsv(DataTable dt, string filePath)
{
    StringBuilder sb = new StringBuilder();

    // 写入列名
    var headers = dt.Columns.Cast<DataColumn>().Select(c => $"\"{c.ColumnName}\"");
    sb.AppendLine(string.Join(",", headers));

    // 写入每一行
    foreach (DataRow row in dt.Rows)
    {
        var fields = row.ItemArray.Select(field =>
            $"\"{field?.ToString().Replace(\""\", \"""\")}\"");
        sb.AppendLine(string.Join(",", fields));
    }

    File.WriteAllText(filePath, sb.ToString(), Encoding.UTF8);
}

CSV 可被 Excel 正常打开,适合大数据量快速导出。

基本上就这些。选择哪种方式取决于你的需求:NPOI 兼容性最好,ClosedXML 最简单,EPPlus 功能最强,CSV 最轻便。都不依赖 Office 组件,部署方便。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1948

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

658

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2401

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

47

2026.01.19

vsd文件打开方法
vsd文件打开方法

vsd文件打开方法有使用Microsoft Visio软件、使用Microsoft Visio查看器、转换为其他格式等。想了解更多vsd文件相关内容,可以阅读本专题下面的文章。

510

2023.10.30

excel对比两列数据异同
excel对比两列数据异同

Excel作为数据的小型载体,在日常工作中经常会遇到需要核对两列数据的情况,本专题为大家提供excel对比两列数据异同相关的文章,大家可以免费体验。

1454

2023.07.25

excel重复项筛选标色
excel重复项筛选标色

excel的重复项筛选标色功能使我们能够快速找到和处理数据中的重复值。本专题为大家提供excel重复项筛选标色的相关的文章、下载、课程内容,供大家免费下载体验。

428

2023.07.31

excel复制表格怎么复制出来和原来一样大
excel复制表格怎么复制出来和原来一样大

本专题为大家带来excel复制表格怎么复制出来和原来一样大相关文章,帮助大家解决问题。

572

2023.08.02

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

26

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 21.2万人学习

成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 2.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号