首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用c#中的Open Xml SDK将DataTable导出到Excel

使用C#中的Open XML SDK将DataTable导出到Excel是一种常见的数据导出方法。Open XML SDK是一个免费的开源库,可以用于创建、读取和编辑Microsoft Office格式的文档,如Word、Excel等。

以下是使用Open XML SDK将DataTable导出到Excel的步骤:

  1. 安装Open XML SDK:可以通过NuGet包管理器安装Open XML SDK。在Visual Studio中,右键单击项目,选择“管理NuGet程序包”,然后搜索“DocumentFormat.OpenXml”并安装。
  2. 创建Excel文件:使用Open XML SDK创建一个Excel文件,并将DataTable导出到该文件中。以下是一个示例代码:
代码语言:csharp
复制
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
using System.Data;
using System.IO;

public static void ExportDataTableToExcel(DataTable dataTable, string filePath)
{
    using (var spreadsheetDocument = SpreadsheetDocument.Create(filePath, SpreadsheetDocumentType.Workbook))
    {
        var workbookPart = spreadsheetDocument.AddWorkbookPart();
        workbookPart.Workbook = new Workbook();

        var worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
        var sheetData = new SheetData();
        worksheetPart.Worksheet = new Worksheet(sheetData);

        var sheets = spreadsheetDocument.WorkbookPart.Workbook.AppendChild(new Sheets());

        var sheet = new Sheet()
        {
            Id = spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart),
            SheetId = 1,
            Name = "Sheet1"
        };
        sheets.Append(sheet);

        var headerRow = new Row();
        foreach (DataColumn column in dataTable.Columns)
        {
            var cell = new Cell();
            cell.DataType = CellValues.String;
            cell.CellValue = new CellValue(column.ColumnName);
            headerRow.AppendChild(cell);
        }
        sheetData.AppendChild(headerRow);

        foreach (DataRow row in dataTable.Rows)
        {
            var dataRow = new Row();
            foreach (DataColumn column in dataTable.Columns)
            {
                var cell = new Cell();
                cell.DataType = CellValues.String;
                cell.CellValue = new CellValue(row[column].ToString());
                dataRow.AppendChild(cell);
            }
            sheetData.AppendChild(dataRow);
        }
    }
}
  1. 调用方法:可以在需要导出Excel的地方调用上面的方法,将DataTable和文件路径作为参数传递。例如:
代码语言:csharp
复制
var dataTable = new DataTable();
// 添加列和数据到DataTable
ExportDataTableToExcel(dataTable, "output.xlsx");

这样就可以将DataTable导出到Excel文件中了。需要注意的是,Open XML SDK可能不支持所有的Excel功能,因此在使用时需要根据具体情况进行调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Groovy】Xml 反序列化 ( 使用 XmlParser 解析 Xml 文件 | 删除 Xml 文件节点 | 增加 Xml 文件节点 | 修改后 Xml 数据输出到文件 )

文章目录 一、删除 Xml 文件节点 二、增加 Xml 文件节点 三、修改后 Xml 数据输出到文件 四、完整代码示例 一、删除 Xml 文件节点 ---- 在 【Groovy】Xml...反序列化 ( 使用 XmlParser 解析 Xml 文件 | 获取 Xml 文件节点和属性 | 获取 Xml 文件节点属性 ) 博客基础上 , 删除 Xml 文件节点信息 ; 下面是要解析..."175cm") 三、修改后 Xml 数据输出到文件 ---- 创建 XmlNodePrinter 对象 , 并调用该对象 print 方法 , 传入 XmlParser 对象 , 可以将该...XmlParser 数据信息写出到文件 ; // 修改后 Xml 节点输出到目录 new XmlNodePrinter(new PrintWriter(new File("b.xml"))).print...Xml 节点输出到目录 new XmlNodePrinter(new PrintWriter(new File("b.xml"))).print(xmlParser) 执行结果 : [name[attributes

6.1K40

关于asp.net与winform导出excel代码

1、整个html全部输出execl 此法html中所有的内容,如按钮,表格,图片等全部输出到Execl。    ...,如果 改为ms-excel将将输出excel格式,也就是说以电子表格格式输出到客户端,这时浏览器提示你下载保存。...2、DataGrid控件数据导出Execl 上述方法虽然实现了导出功能,但同时把按钮、分页框等html所有输出信息了进去。而我们一般要导出是数据,DataGrid控件上数据。...这样可以持久把导出文件存起来,以便实现其它功能。 5、execl文件导出到服务器上,再下载。...导出到Excel/Csc文件并不难,所以就有好多方法:控件直接Render、把DataSet输出成String再Write出来等,(当然如果调用Excel程序库文件的话还可以使用更强直接操作Excel

5.5K10

C# NOPI 项目实战(经典)(可下载项目源码)

这篇文章主要介绍了如何安装NPOI,以及NPOI具体如何使用,并且用具体实例介绍了excel导入到datagridview以及 datagridview如何导出到excel并保存。...今天这篇文章主要是实现多个excel多张表格合并,这个是我们数据处理时候经常使用一个功能,其实最佳途径是用excel自带power query(excel2016自带,excel2016以下版本需要安装插件...),用这个功能你甚至不需要写一句代码,就可以轻轻松松实现百万计甚至千万级数据操作,当然你也可以用excel里面的vba,这些都可以,但是这不是今天要将内容,今天内容就是要用C# 实现数据表格合并。...using System.IO; namespace npoi1 { public class NPOIExcel { /// /// excel...\TPS20\Desktop\excel\"); for (int i = 0; i < sheetCount; i++) //遍历一个excel每个sheet

2.2K20

Excel催化剂开源第25波-Excel调用百度AI,返回AI结果

当然在AI时代,少不了各种AI接口使用场景,普通开发者只需聚焦在自己业务场景上,这些AI底层技术,只需类似水煤电一般去BAT这些大厂那里去消费即可,作一个AI接口消费者,AI能力接入到自己应用...当然Excel催化剂专注于数据分析领域,当然少不了AI能力,文本世界非结构化数据进行结构化分析,是数据分析一个很大应用场景。...具体实现功能 在注流程序语言中,其实各大厂商会给予封装好现在SDK,类似我们日常调用Excel功能一样,只需简单传入几个参数,即可实现某些特定功能,无需从头开始,调用网页接口,再解释网页内容,获取自己想要内容这么繁琐...SDK就是一个dll文件 Excel催化剂实现AI是自然语言处理和翻译两大类(翻译好像不在这个AI当中,而分词的话,为了实现离线版和灵活自定义词库管理,用了结巴库,而没有用百度接口),现以其中评论分析讲解一下...借助VSTO代码,能够顺利和百度AI进行交互可知,在.Net世界,不一定需要多么高级开发技术,亦能实现一些复杂技术应用,只需要这些复杂应用,它们愿意为.Net语言写一些SDK供调用即可。

58510

Office Open XML学习(1)-创建excel文档,并向单元格插入字符串

自从Open XML出现后,这种情况在很大程度上得到了改观,Open XML已经逐渐成为一种办公文档通用国际标准了(该标准基于XML格式),详情见百度百科 http://baike.baidu.com.../view/1201978.htm 要在C#使用Open XML,需先下载Open XML SDK (目前最高版本为2.0),下载地址为:http://www.microsoft.com/downloads...FamilyID=c6e744e5-36e9-45f5-8d8c-331df206e0d0 安装完以后,就能直接使用了,下面的代码演示了,如何创建一个Excel文档,并创建一个工作表"博客园",最后在该工作表单元格...前面提到过Open XML是一个基于XML标准,Open XML SDK安装后,提供了一个工具"Open XML SDK 2.0 Productivity Tool",可以用来查看所有支持Open XML...该工具还能将任何Open Document(即支持Open XML标准office文档),直接生成相应C#代码(很给力一个功能!)

2.6K100

dotnet OpenXML 读取 PPT 内嵌 ole 格式 Excel 表格信息

这个格式存放方式是 ole 格式,在此 OLE 文件里面,存放 OpenXML 格式 xlsx 格式表格文件,以下详细告诉大家此格式 在 Slide.xml 页面里面,存放是在 GraphicFrame...本质上来说 OLE 和 ZIP 等压缩格式是同等级,是用来做存储,也就是说 OLE 格式本身不是特定给 Excel 表格使用,仅仅只是用来做存储而已。...在 OpenXML SDK 里面,不会真的 PPTX 文件解压缩,原因有两个:第一个是性能考虑,第二个是有一些内容解压缩之后会丢失信息(不是使用文件存放,只是兼容zip格式而已)而导致了尝试使用路径读取...协议(宽松,可商业,无须开源) Open MCDF 库,这是一个完全由 C# 实现读取 OLE 格式文档库,在我做 VisualStudio 插件时也用到,请看 dotnet Roslyn 通过读取...Workbook.Sheets; 更多读取 Excel 方法请看 C# dotnet WPF 使用 OpenXml 解析 Excel 文件 本文不再详细告诉大家如何读取此 Excel 内容 本文以上测试文件和代码放在

1.3K40

ASP.NET MVC5+EF6+EasyUI 后台管理系统(87)-MVC Excel导入和导出

前言: 导入导出实在多例子,很多成熟组建都分装了导入和导出,这一节演示利用LinqToExcel组件对Excel导入,这个是一个极其简单例子。 我并不是说导入简单。...而是LinqToExcel让我们对Excel操作更加简单! 最后我们利用ClosedXML输出Excel。...这个比现流行NPOI与EPPlus更加优秀组件,以Open XML SDK为基础,所以只支持xlsx,不支持xls格式(现阶段谁没有个office2007以上版本) 他导出Excel根据官方描述,...兼容性远超同行对手 如果你不是使用本架构只看2,3,4点,使用BLL层代码,这同样适用你MVC程序 知识点: LinqToExcel组件读取Excel文件 ClosedXML组件输出Excel 准备...3.文件上传 (这一点简单带过,可以到网上下载上传代码植入到自己系统) 或者下载第32节源码 或者下载本节示例代码都可以 我这里使用普通form上传功能 添加导入前端代码 <div id="uploadExcel

1.6K90

ASP.NET MVC5+EF6+EasyUI 后台管理系统(87)-MVC Excel导入和导出

前言: 导入导出实在多例子,很多成熟组建都分装了导入和导出,这一节演示利用LinqToExcel组件对Excel导入,这个是一个极其简单例子。 我并不是说导入简单。...而是LinqToExcel让我们对Excel操作更加简单! 最后我们利用ClosedXML输出Excel。...这个比现流行NPOI与EPPlus更加优秀组件,以Open XML SDK为基础,所以只支持xlsx,不支持xls格式(现阶段谁没有个office2007以上版本) 他导出Excel根据官方描述,...兼容性远超同行对手 如果你不是使用本架构只看2,3,4点,使用BLL层代码,这同样适用你MVC程序 知识点: LinqToExcel组件读取Excel文件 ClosedXML组件输出Excel...3.文件上传 (这一点简单带过,可以到网上下载上传代码植入到自己系统) 或者下载第32节源码 或者下载本节示例代码都可以 我这里使用普通form上传功能 添加导入前端代码 <div id="uploadExcel

1.2K01
领券