本文小编为大家详细介绍“C#中如何使用NPOI实现Excel导入导出功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#中如何使用NPOI实现Excel导入导出功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

Excel导入

使用OpenFileDiolog控件和button结合,选择文件导入,将路径显示在文本框

设置按钮点击事件,将文件路径赋给textBox.Text

privatevoidDepartment_SUM_Click(objectsender,EventArgse){OpenFileDialogopen=newOpenFileDialog();open.ShowDialog();textBox1.Text=open.FileName;}

实现excel导入,通过textBox1.Text来获取文件路径

privatevoidbutton_Excel_Click(objectsender,EventArgse){FileStreamfs=null;IWorkbookworkbook=null;ISheetsheet=null;IRowrow=null;Stringtxtpath=textBox1.Text;fs=File.OpenRead(txtpath);workbook=newXSSFWorkbook(fs);if(workbook!=null){sheet=workbook.GetSheetAt(0);//获取excel表格的第一个sheetif(sheet!=null){//行的LastRowNum是0~N-1//列的LastCellNum是1~NintrowCount=sheet.LastRowNum;if(rowCount>0){IRowfirstrow=sheet.GetRow(0);intcellCount=firstrow.LastCellNum;for(inti=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的位置”位置

DataTabletable=newDataTable();DataRowdr;table.Columns.Add("列名1",System.Type.GetType("System.String"));table.Columns.Add("列名2",System.Type.GetType("System.Double"));for(inti=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导出的方式

publicboolAdd_DataTable_To_Excel(stringoutput_file_path,DataTabledt,stringsheet_name){FileStreamfs=null;IWorkbookworkbook=null;ISheetsheet=null;IRowrow=null;XSSFWorkbookxssfworkbook=null;fs=newFileStream(output_file_path,FileMode.Open,FileAccess.Read,FileShare.ReadWrite);xssfworkbook=newXSSFWorkbook(fs);sheet=xssfworkbook.GetSheet(sheet_name);//设置马上要使用的Cell数据格式IDataFormatdataformat=xssfworkbook.CreateDataFormat();ICellStylestyle0=xssfworkbook.CreateCellStyle();style0.DataFormat=dataformat.GetFormat("0.0000");ICellStylestyle1=xssfworkbook.CreateCellStyle();style1.DataFormat=dataformat.GetFormat("0.00%");if(sheet!=null){introwCount=sheet.LastRowNum;if(rowCount>0){IRowfirstrow=sheet.GetRow(0);intcellCount=firstrow.LastCellNum;for(inti=0;i<=rowCount-1;i++){row=sheet.GetRow(i+1);//表中有行为空,将空的行影响消除if(!"".Equals(row.Cells[code_index].StringCellValue)){row=sheet.GetRow(i+1);for(intj=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;}}}}}}//导出excelMemoryStreamstream=newMemoryStream();xssfworkbook.Write(stream);varbuf=stream.ToArray();using(FileStreamfss=newFileStream(txtpath,FileMode.Create,FileAccess.Write))//保存为Excel文件{fss.Write(buf,0,buf.Length);fss.Flush();}returntrue;}

基础的Excel文件的导入导出功能到这里全部完成

读到这里,这篇“C#中如何使用NPOI实现Excel导入导出功能”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。