文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-29 06:28

关注

本文小编为大家详细介绍“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导入导出功能”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯