C# NPOI导出datatable----Excel模板画图表

1、创建Excel模板

2、安装NPOI管理包

3、创建工作簿 (XLSX和XLS步骤一样,以XLS为例)

IWorkbook workbook = null;

string time = DateTime.Now.ToString("yyyyMMddHHmmss");

string excelTempPath = Application.StartupPath + @"\Excel\分析模板.xls";//分析模板

string path = Application.StartupPath + @"\Excel\分析文件" + time + ".xls";//保存路径

//读取Excel模板

using (FileStream fs = new FileStream(excelTempPath, FileMode.Open, FileAccess.Read))

{

workbook = new HSSFWorkbook(fs);

}

//获取sheet模板

ISheet sheet1 = workbook.GetSheetAt(0);

//将DataSet导出为Excel

4、讲datatable数据写入Excel

//将DataSet导出为Excel

int rowCount = dt.Rows.Count;//行数

int columnCount = dt.Columns.Count;//列数

//设置列头

IRow row = sheet1.CreateRow(0);//excel第一行设为列头

for (int c = 0; c < columnCount; c++)

{

ICell cell = row.CreateCell(c);

cell.SetCellValue(dt.Columnsc.ColumnName);

}

//设置每行每列的单元格,

for (int i = 0; i < rowCount; i++)

{

row = sheet1.CreateRow(i + 1);

for (int j = 0; j < columnCount; j++)

{

ICell cell = row.CreateCell(j);//excel第二行开始写入数据

if (dt.Rowsij.ToString().Length > 0)//判断分数是否为空

{//写入数值类型

cell.SetCellValue((double)Convert.ToDecimal((dt.Rowsij)));

}

else

{//写入文本类型

cell.SetCellValue(dt.Rowsij.ToString());

}

}

}

workbook.SetSheetName(0, dt.TableName);//修改excel页名为datatable表名

5、向文件输出数据

//向outPath输出数据

using (FileStream fs = File.Open(path, FileMode.Create, FileAccess.Write))

{

workbook.Write(fs);//向打开的这个xls文件中写入数据

fs.Close();

}

相关推荐
云泽8086 小时前
从零吃透 C++ 异常:抛出捕获、栈展开、异常重抛与编码规范详解
开发语言·c++·代码规范
灯澜忆梦6 小时前
GO---可见性规则
开发语言·golang
逝水无殇6 小时前
C# 文件的输入与输出详解
开发语言·数据库·后端·c#
这是个栗子7 小时前
前端开发中的常用工具函数(八)
开发语言·前端·javascript
凤凰院凶涛QAQ7 小时前
《Java版数据结构 & 集合类剖析》栈与队列:“push/pop 是栈的灵魂,offer/poll 是队列的骨架——四组 API,两种人生”
java·开发语言·数据结构
研☆香8 小时前
为什么变量声明在赋值前也能使用?—— 深入理解 JavaScript 变量提升与作用域
开发语言·前端·javascript
右耳朵猫AI8 小时前
PHP周刊2026W28 | 安全更新、Laravel 13.18、Twig 3.28
开发语言·php·laravel
second608 小时前
第一部分:快速上手 —— 建立 C++ 基本语法与编程范式
开发语言·c++
郝学胜-神的一滴8 小时前
算法实战:最小k个数——大顶堆的优雅解法
开发语言·数据结构·c++·python·程序人生·算法·排序算法
bksczm8 小时前
linux之线程概念和控制
linux·开发语言·c++