首页 > 其他分享 >使用NPOI组件简单实现导出

使用NPOI组件简单实现导出

时间:2023-05-31 15:25:22浏览次数:36  
标签:wb filePath 导出 NPOI 组件 new dt string

  1. 首先我们在 NuGet程序包管理中下载 NPOI组件 目前版本稳定的是:2.4.1
  2. 这里可以看一下NPOI下载完成后生成的四个引用,其作用
  • 然后废话也不多说了,直接上代码
  1. 然后我们在项目中进行引用

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using NPOI.HSSF.UserModel;

点击查看代码
 /// <summary>
        /// 将 DataTable 导出至 Excel 文件
        /// </summary>
        /// <param name="dt">数据表</param>
        /// <param name="filePath">文件路径(包括文件名和扩展名)</param>
        public static string ExportToExcel(DataTable dt, string filePath, out string err)
        {
           
                // 判断数据表是否为空
                if (dt == null || dt.Rows.Count == 0)
                {
                    throw new Exception("要导出的数据表不能为空!");                   
                }

                // 判断文件路径是否为空
                if (string.IsNullOrWhiteSpace(filePath))
                {
                    throw new Exception("文件路径不能为空!");
                }
                // 获取文件扩展名
                string fileExt = Path.GetExtension(filePath).ToLower();
                // 根据文件扩展名创建工作簿对象
                IWorkbook wb = null;
                switch (fileExt)
                {
                    case ".xlsx":
                        wb = new XSSFWorkbook();
                        break;
                    case ".xls":
                        wb = new HSSFWorkbook();
                        break;
                    case ".csv":
                        wb = new HSSFWorkbook();
                        break;
                    default:
                        throw new Exception("不支持的文件格式!");
                }
                // 创建工作表对象
                ISheet sheet = wb.CreateSheet();
                // 创建表头行,并填充表头内容
                IRow headerRow = sheet.CreateRow(0);
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    headerRow.CreateCell(i).SetCellValue(dt.Columns[i].ColumnName);
                }
                // 填充数据行
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    IRow dataRow = sheet.CreateRow(i + 1);
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        dataRow.CreateCell(j).SetCellValue(dt.Rows[i][j].ToString());
                    }
                    
                }               
                filePath = @"D:\temp\" + filePath;
                // 保存 Excel 文件
                using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
                {
                    wb.Write(fs);
                    // 自动打开生成的文件夹
                    System.Diagnostics.Process.Start("explorer.exe", "文件地址");  
                }
            }
        }

标签:wb,filePath,导出,NPOI,组件,new,dt,string
From: https://www.cnblogs.com/hedaniu/p/17446195.html

相关文章

  • [Slide] 解决Slidev export导出pdf报错
    解决Slidevexport导出pdf报错问题按照Slidev的官方文档使用导出为pdf需要安装playwright-chromium官网安装方法如下:npmi-Dplaywright-chromium在我电脑上执行安装后直接执行导出命令sudoslidevexport,显示报错如下:Slidevv0.42.1(global)theme@slidev/......
  • SimpleAdmin手摸手教学之:基于Ant Design Tree组件实现树形结构数据的异步加载
    一、说明当有一个树形结构的数据有非常多个节点的时候,一次性加载所有节点会显得过于臃肿,可能会对性能造成影响,正好AntDesign的树(Tree)组件支持异步加载,于是我就想把异步加载封装为一个组件,可以减少接口数据返回,点击展开节点,动态加载数据。非常好用!二、前端实现需要接收一些......
  • python~发布自己的py组件
    你使用python写的东西,想让其它人直接使用,可以像java,.net一样,发到包管理平台即可,在python中,你可以使用twine这个工具来实现发布,就像.net里的nuget,java里的mvndeploy一样。本地自己用添加一个hello.py的文件,里面有个say方法,打印字符importsysdefsay(to):print('hel......
  • 组件
    动态编辑表格(支持自定义编辑组件)<template><divclass="edit-cell"@click="onFieldClick"><el-tooltipv-if="!editMode&&!showInput":placement="toolTipPlacement":open-del......
  • 驱动开发:内核解析PE结构导出表
    在笔者的上一篇文章《驱动开发:内核特征码扫描PE代码段》中LyShark带大家通过封装好的LySharkToolsUtilKernelBase函数实现了动态获取内核模块基址,并通过ntimage.h头文件中提供的系列函数解析了指定内核模块的PE节表参数,本章将继续延申这个话题,实现对PE文件导出表的解析任务,导出表......
  • 【.NET源码解读】Configuration组件及自动更新
    Configuration组件是.NET中一个核心的、非常重要的组件。它提供了一种方便的机制,用于从配置文件、环境变量、命令行参数等各种数据源中读取和配置应用程序,以满足不同环境下应用程序的需求。在本篇文章中,将会介绍Configuration的基本用法,并通过源码探究.NET中Configuration的实现......
  • 【Unity】记录一下:自定义组件的InspectorGUI面板,修改数据不保存问题
    使用target修改之后需要使用EditorUtility.SetDirty设置为脏,但是要注意的是应该设置target所指代的组件,而非是对.gameObject设置为脏,这是没有用的。[CustomEditor(typeof(MerryGoRound))]publicclassMerryGoRoundEditor:Editor{publicoverridevoidOnInspectorGUI(......
  • Doris(五) -- 数据的导入导出
    数据导入使用Insert方式同步数据用户可以通过MySQL协议,使用INSERT语句进行数据导入INSERT语句的使用方式和MySQL等数据库中INSERT语句的使用方式类似。INSERT语句支持以下两种语法:INSERTINTOtableSELECT...INSERTINTOtableVALUES(...)对于Doris来说,......
  • 【夜莺监控】管理Kubernetes组件指标
    !!大家好,我是乔克,一个爱折腾的运维工程,一个睡觉都被自己丑醒的云原生爱好者。作者:乔克公众号:运维开发故事博客:www.jokerbai.com开始之前Kubernetes是一个简单且复杂的系统,简单之处在于其整体架构比较简单清晰,是一个标准的Master-Slave模式,如下:但是,它又是一个复杂的系统,不论是M......
  • vant组件Popup 弹出层单独设置 van-overlay和van-popup样式
    <van-popupv-model="showInfoBox"position="top"class="top_">默认情况下会自带灰色蒙版如果一个页面的布局需要调用很多个弹框的话有的弹框不想要这个蒙版背景就需要通过这样设置相当于全局设置了.van-overlay{background-color:transparent;width......