前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >csharp代码每日一例:使用NPOI DLL 将Datatable数据导出为Excel文件

csharp代码每日一例:使用NPOI DLL 将Datatable数据导出为Excel文件

作者头像
程序你好
发布2018-07-20 17:09:39
2.3K0
发布2018-07-20 17:09:39
举报
文章被收录于专栏:程序你好程序你好

NPOI介绍:

NPOI作为国人开发的开源项目,文档完善,更新及时,为.NET开发者提供了便利,主要用于生成Excel报表,搜索引擎模块中Excel中的文本提取,批量生成Excel文件,基于Excel文件模板生成新的Excel等多方面。

使用NPOI生成Excel

在本文中,我们将学习如何在c#中使用NPOI将DataTable数据导出或转换成Excel文件。首先,我们需要安装像NPOI和Newtonsoft这样的软件包。

安装完这些包后,我们需要添加一些名称空间来访问NPOI类,以及将JSON转换为List的Newtonsoft。在添加所有包和名称空间之后,然后创建一个类,用于将JSON转换为List,然后设置列的名称,并设置一个for循环,用于获取和设置数据到Excel计算单元中。请参阅下面的完整步骤以生成Excel文件。让我们开始代码。

第一步是在项目中安装以下NuGet包。

Install-Package NPOI -Version 2.3.0

Install-Package Newtonsoft.Json -Version 11.0.2

安装以上包后,添加以下名称空间,用于访问生成并保存在特定路径中的Excel类和方法。

using System.Data;

using NPOI.HSSF.UserModel;

using Newtonsoft.Json;

using System.IO;

第二步是从数据库中获取数据并将其存储到DataTable中。对于本例,在这里,生成静态数据表并添加一条记录用于测试。

请参见下面生成的datatable代码。

DataTable dt1 = new DataTable();

dt1.Columns.Add("ID");

dt1.Columns.Add("Name");

DataRow dr = dt.NewRow();

dr["ID"] = "1";

dr["Name"] = "Test";

dt.Rows.Add(dr);

下一步是创建一个类,用于使用Newtonsoft将DataTable转换为列表List。请参阅下面的类代码以转换datatable。

public class SummaryClass

{

public string ID { get; set; }

public string Name { get; set; }

}

现在,创建一个从datatable生成Excel文件的函数。请参见下面的函数代码,用于将datatable转换为列表并将列表转换为Excel文件。

public void GenerateExcelFile()

{

// Below code is create datatable and add one row into datatable.

DataTable dt = new DataTable();

dt.Columns.Add("ID");

dt.Columns.Add("Name");

DataRow dr = dt.NewRow();

dr["ID"] = "1";

dr["Name"] = "Test";

dt.Rows.Add(dr);

// Declare HSSFWorkbook object for create sheet

var workbook = new HSSFWorkbook();

var sheet = workbook.CreateSheet("NameOfYourSheet");

// Convert datatable into json

string JSON = JsonConvert.SerializeObject(dt);

// Convert json into SummaryClass class list

var items = JsonConvert.DeserializeObject<List<SummaryClass>>(JSON);

// Set column name this column name use for fetch data from list

var columns = new[] { "ID", "Name" };

// Set header name this header use for set name in excel first row

var headers = new[] { "ID", "Name" };

var headerRow = sheet.CreateRow(0);

//Below loop is create header

for (int i = 0; i < columns.Length; i++)

{

var cell = headerRow.CreateCell(i);

cell.SetCellValue(headers[i]);

}

//Below loop is fill content

for (int i = 0; i < items.Count; i++)

{

var rowIndex = i + 1;

var row = sheet.CreateRow(rowIndex);

for (int j = 0; j < columns.Length; j++)

{

var cell = row.CreateCell(j);

var o = items[i];

cell.SetCellValue(o.GetType().GetProperty(columns[j]).GetValue(o, null).ToString());

}

}

// Declare one MemoryStream variable for write file in stream

var stream = new MemoryStream();

workbook.Write(stream);

string FilePath = "SetYourFileSavePath - With File Name"

//Write to file using file stream

FileStream file = new FileStream(FilePath, FileMode.CreateNew, FileAccess.Write);

stream.WriteTo(file);

file.Close();

stream.Close();

总结

上面的代码生成了Excel文件,并将其保存在特定的路径中。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序你好 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • NPOI介绍:
  • 使用NPOI生成Excel
  • 总结
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档