这篇文章主要为大家详细介绍了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;
}
}
}
}
}
}
//导出excel
MemoryStream 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# 调用WebService的方法 2023-03-09
- C# windows语音识别与朗读实例 2023-04-27
- C#类和结构详解 2023-05-30
- 一个读写csv文件的C#类 2022-11-06
- linux – 如何在Debian Jessie中安装dotnet core sdk 2023-09-26
- winform把Office转成PDF文件 2023-06-14
- C# List实现行转列的通用方案 2022-11-02
- ZooKeeper的安装及部署教程 2023-01-22
- C#控制台实现飞行棋小游戏 2023-04-22
- unity实现动态排行榜 2023-04-27