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.Columns[c].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.Rows[i][j].ToString().Length > 0)//判断分数是否为空

{//写入数值类型

cell.SetCellValue((double)Convert.ToDecimal((dt.Rows[i][j])));

}

else

{//写入文本类型

cell.SetCellValue(dt.Rows[i][j].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();

}

相关推荐
同学小张1 小时前
【端侧AI 与 C++】1. llama.cpp源码编译与本地运行
开发语言·c++·aigc·llama·agi·ai-native
踢球的打工仔2 小时前
PHP面向对象(7)
android·开发语言·php
汤姆yu4 小时前
基于python的外卖配送及数据分析系统
开发语言·python·外卖分析
Yue丶越4 小时前
【C语言】字符函数和字符串函数
c语言·开发语言·算法
翔云 OCR API5 小时前
人脸识别API开发者对接代码示例
开发语言·人工智能·python·计算机视觉·ocr
V***u4535 小时前
MS SQL Server partition by 函数实战二 编排考场人员
java·服务器·开发语言
这是程序猿5 小时前
基于java的ssm框架旅游在线平台
java·开发语言·spring boot·spring·旅游·旅游在线平台
芳草萋萋鹦鹉洲哦5 小时前
【elemen/js】阻塞UI线程导致的开关卡顿如何优化
开发语言·javascript·ui
爱学习的小邓同学5 小时前
C++ --- 多态
开发语言·c++
颜*鸣&空6 小时前
QT实现串口通信+VSPD+串口调试工具
开发语言·qt