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

December 17, 2023
测试
测试
测试
测试
7 分钟阅读

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文件,并将其保存在特定的路径中。

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多