iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >C#中如何使用NPOI实现Excel导入导出功能
  • 606
分享到

C#中如何使用NPOI实现Excel导入导出功能

2023-06-29 06:06:49 606人浏览 独家记忆
摘要

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

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

Excel导入

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

C#中如何使用NPOI实现Excel导入导出功能

设置按钮点击事件,将文件路径赋给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导入导出功能”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: C#中如何使用NPOI实现Excel导入导出功能

本文链接: https://www.lsjlt.com/news/323061.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作