C#中如何使用NPOI实现Excel导入导出功能
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本文小编为大家详细介绍"C#中如何使用NPOI实现Excel导入导出功能",内容详细,步骤清晰,细节处理妥当,希望这篇"C#中如何使用NPOI实现Excel导入导出功能"文章能帮助大家解决疑惑,下面跟
千家信息网最后更新 2025年11月07日C#中如何使用NPOI实现Excel导入导出功能
本文小编为大家详细介绍"C#中如何使用NPOI实现Excel导入导出功能",内容详细,步骤清晰,细节处理妥当,希望这篇"C#中如何使用NPOI实现Excel导入导出功能"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
Excel导入
使用OpenFileDiolog控件和button结合,选择文件导入,将路径显示在文本框
设置按钮点击事件,将文件路径赋给textBox.Text
private void Department_SUM_Click(object sender, EventArgs e) { OpenFileDialog open = new OpenFileDialog(); open.ShowDialog(); textBox1.Text = open.FileName; }实现excel导入,通过textBox1.Text来获取文件路径
private void button_Excel_Click(object sender, EventArgs e) { FileStream fs = null; IWorkbook workbook = null; ISheet sheet = null; IRow row = null; String txtpath = textBox1.Text; fs = File.OpenRead(txtpath); workbook = new XSSFWorkbook(fs); if (workbook != null) { sheet = workbook.GetSheetAt(0); //获取excel表格的第一个sheet if (sheet != null) { //行的LastRowNum是0~N-1 //列的LastCellNum是1~N int rowCount = sheet.LastRowNum; if (rowCount > 0) { IRow firstrow = sheet.GetRow(0); int cellCount = firstrow.LastCellNum; for (int i = 0; i <= rowCount - 1; i++) {//获取行的第6和第7列数据,如果cell类型是文本,则通过StringCellValue取值//如果cell类型是数值,则通过NumericCellValue来取值 row = sheet.GetRow(i + 1); row.Cells[5].NumericCellValue; row.Cells[6].StringCellValue;//可以将Cell的数据存放在list中,这里假设将两列cell的数据存入list1,list2 } fs.Close(); } //实际存放DataTable的位置 //调用自定义方法,实现导出 Add_DataTable_To_Excel(txtpath, table, sheet_name); } }要实现excel导出,先将程序中的excel存为DataTable格式
本段代码存在于上面代码"//实际存放DataTable的位置"位置
DataTable table = new DataTable(); DataRow dr; table.Columns.Add("列名1", System.Type.GetType("System.String")); table.Columns.Add("列名2", System.Type.GetType("System.Double")); for (int i = 0; i < list4.Count; i++) { dr = table.NewRow(); dr["列名1"] = list1i]; dr["列名2"] = list2[i].ToString("0.0000"); //将存入的数据格式保存为保留四位小数 table.Rows.Add(dr); }通过方法导出excel,传参为文件路径,DataTable,表名
通过获取要导入数据的目标excel的内容,导入数据,要将excel导出的方式
public bool Add_DataTable_To_Excel(string output_file_path, DataTable dt, string sheet_name) {FileStream fs = null; IWorkbook workbook = null; ISheet sheet = null; IRow row = null;XSSFWorkbook xssfworkbook = null; fs = new FileStream(output_file_path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); xssfworkbook = new XSSFWorkbook(fs); sheet = xssfworkbook.GetSheet(sheet_name);//设置马上要使用的Cell数据格式 IDataFormat dataformat = xssfworkbook.CreateDataFormat(); ICellStyle style0 = xssfworkbook.CreateCellStyle(); style0.DataFormat = dataformat.GetFormat("0.0000"); ICellStyle style1 = xssfworkbook.CreateCellStyle(); style1.DataFormat = dataformat.GetFormat("0.00%");if (sheet != null) { int rowCount = sheet.LastRowNum; if (rowCount > 0) { IRow firstrow = sheet.GetRow(0); int cellCount = firstrow.LastCellNum;for (int i = 0; i <= rowCount - 1; i++) { row = sheet.GetRow(i + 1); //表中有行为空,将空的行影响消除 if (!"".Equals(row.Cells[code_index].StringCellValue)) { row = sheet.GetRow(i + 1); for (int j = 0; j <= dt.Rows.Count - 1; j++) { if (row.Cells[code_index].StringCellValue.Equals(dt.Rows[j][0])) { //遍历将DataTable中的数据存入Cell的值 row.Cells[1].SetCellValue(Convert.ToDouble(dt.Rows[j][0].ToString())); row.Cells[1].CellStyle = style0; row.Cells[2].SetCellValue(Convert.ToDouble(dt.Rows[j][1].ToString()) / Convert.ToDouble(dt.Rows[j][1].ToString())); row.Cells[2].CellStyle = style1; } } } } } }//导出excelMemoryStream stream = new MemoryStream();xssfworkbook.Write(stream); var buf = stream.ToArray(); using (FileStream fss = new FileStream(txtpath, FileMode.Create, FileAccess.Write)) //保存为Excel文件 { fss.Write(buf, 0, buf.Length); fss.Flush(); } return true;}基础的Excel文件的导入导出功能到这里全部完成
读到这里,这篇"C#中如何使用NPOI实现Excel导入导出功能"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
数据
文件
功能
路径
C#
位置
内容
文章
格式
代码
实际
文本
方法
类型
妥当
事件
基础
小数
思路
按钮
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
中学第二季度安全数据库
网络安全法至少次检测评估
苏州光学建模软件开发
贵阳软件开发工资多少钱
和平精英服务器卡顿怎么办
中建二局oa服务器端口
客户端软件开发
wps按图表关联数据库
服务器与电脑的区别单项选择题
网络安全使用技术
吃鸡服务器维护无法登录
天津虚拟服务器管理软件云空间
大连迅麦风互联网科技有限公司
智能手机铃声软件开发
寺庙网络安全宣传
编程学到安卓软件开发要多久
facebook服务器维修视频
中国顶级域名服务器
工信部信息网络安全员培训
贵州语音网络技术服务市场价
建立数据库新建连接
北京编程软件开发机构
我的世界高人气服务器手机版推荐
azurearc服务器
文件服务器架设
水粉网络安全手抄报
浪潮服务器内存电脑能用吗
facebook服务器维修视频
如何查看所有的数据库
工控网络安全学术会议