导入导出封装的工具类 (一) 利用POI封装

导入导出封装的工具类 (一) 利用POI封装

              对于导入导出各个项目中差点儿都会用到,记得在高校平台中封装过导入导出这部分今天看了看是利用JXL封装的而经理说让我用POI写写导出,这两个导入导出框架是眼下比較流程和经常使用的框架,有必要都了解一下。

              写了写代码认为导入导出这一块底层都是一样的,差点儿全部的框架和别的牛人也好都是底层利用POI或JXL实现,比的是谁对这部分封装的好并且每一个项目中对导入导出详细的细节是不同的,因此,有必要了解了解怎么样操作POI,学学使用它的API做导入导出或许第一步你封装的没有别人那么好,你也会收获非常多了解他们封装的思路和想法,你就会去往哪方面思考、学会站在巨人的肩膀上,才干更好的提高,

              封装这部分我看看了看大的论坛上面,几年曾经甚至十几年前别人就写出了封装非常好的工具类,作为我们假设从头開始去写就太傻了。

              以下是一个导出的封装的简单工具类,临时支持单表导出封装还在继续中,认为思路不错,我们还能够把控制excel的样式、合并单元格、表头、字体等封装起来单独控制,工具类嘛我们须要的功能都能够往里面放。

            

	/**
	 * @deprecated          讲一个list数组导出到excel
	 * @param objList
	 * @param title
	 * @param strHeader
	 * @param strField
	 * @param outputPath
	 */
	public static void exportExcelByMap(List<Map<String,String>> objList, String title, String strHeader, String strField, String outputPath) {  
        
		// 创建工作簿(Excel文件)  
        HSSFWorkbook workbook = new HSSFWorkbook();  
         
        // 创建Excel工作簿的第一个Sheet页  
        HSSFSheet sheet = workbook.createSheet(title);  
          
        // 创建Sheet页的标题行
        createHeader(sheet, strHeader);  
          
        // 创建Sheet页的填充数据
        String[] strArray = strField.split(",");  
        //外循环为行数、内循环为列数
        for(int objIndex = 0; objIndex < objList.size(); objIndex++) {  
            Map map = objList.get(objIndex);  
            HSSFRow row = sheet.createRow(objIndex + 1);   
            for(int i = 0; i < strArray.length; i++) {  
                HSSFCell cell = row.createCell(i);  
                cell.setCellType(HSSFCell.CELL_TYPE_STRING);  
                cell.setCellValue(map.get(strArray[i]).toString());  
            }  
        }  
          
        //保存Excel文件  
        saveExcelFile(workbook, outputPath);  
    }  
	/**
	 * @deprecated          依据表做表单创建表单的标题行
	 * @author lls
	 * @param sheet         表单对象
	 * @param strHeader     标题行字符串
	 */
    private static void createHeader(HSSFSheet sheet, String strHeader){  
        HSSFRow row = sheet.createRow(0); // 创建该页的一行  
        HSSFCell cell = null;  
        //取得标题字段的数组
        String[] strArray = strHeader.split(",");  
          
        for(int i = 0; i < strArray.length; i++) {  
            cell = row.createCell(i); // 创建该行的一列  
            cell.setCellType(HSSFCell.CELL_TYPE_STRING);  
            cell.setCellValue(strArray[i]);  
        }  
          
    }  

               上面能够将一个List数组导出到excel,数组里面存放的是map对象,项目里面都是这样的结构不须要对查询出来的list再做任务处理就能够转为excel,主要是循环加推断,POI还有非常多没用用过,仅仅是简单了解一下实现一个简单的导出类,很多其它功能还在完好。

               也能够利用封装类写一个带窗体的小程序,能够从数据库表中导出到excel,这种小工具应该也好实现。

              类似于JXL、POI这种框架假设想要实现导入导出的功能实现的代码量还是非常多的,有的也非常复杂,假设想要excel有各种样式和效果类似预报表的excel会更不好实现,下篇博客给大家介绍一下,更加简洁、更加好用的导出到excel工具,它支持excel模板我们能够直接在excel里面写代码,简单有用的一个小框架。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119000.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 企业微信机器人python脚本执行报错-‘errcode‘: 40008, ‘errmsg‘: ‘Warning: wrong json format. invalid message type

    企业微信机器人python脚本执行报错-‘errcode‘: 40008, ‘errmsg‘: ‘Warning: wrong json format. invalid message type错误内容{‘errcode’:40008,‘errmsg’:‘Warning:wrongjsonformat.invalidmessagetype,hint:[1596176563_47_d9bbe040d5a640ea75f8625e35783c76],fromip:61.183.117.38,moreinfoathttps://open.work.weixin.qq.com/devtool/query?e=40008’}查看官网错误代码意义40008 不合法

    2022年6月10日
    55
  • tkmapper mybatis plus 集成_gitea docker

    tkmapper mybatis plus 集成_gitea docker———————————————————————————————————————————-一、设置TkMapper单独放在一个包:这个包只有TkMapper一个文件importtk.mybatis.mapper.common.M…

    2022年10月7日
    3
  • 计算机网络bs/cs区别_bs嵌入cs

    计算机网络bs/cs区别_bs嵌入csCS什么是CS?CS(Client/Server)指客户端、服务器架构模式。客户端需要安装专用的客户端软件。CS的优点、特点1.交互性强2.存取模式安全3.网络通信量低4.响应速度快5.利于处理大量数据●能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器,所以CS客户端响应速度快。●操作界面漂亮、形式多样,可以充分满足客户自身的个性化要求。●C/S结构的管理信息系统…

    2022年10月17日
    3
  • 公众号 unionid_微信公众号免费模板

    公众号 unionid_微信公众号免费模板获取用户基本信息(UnionID机制)获取用户基本信息(UnionID机制)获取用户基本信息(UnionID机制)在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号

    2022年8月4日
    5
  • h5 iframe嵌套页面_汇总IOS下奇葩BUG以及iframe嵌套页面带来的一些困扰

    h5 iframe嵌套页面_汇总IOS下奇葩BUG以及iframe嵌套页面带来的一些困扰做H5开发,安卓和IOS的兼容问题经常会困扰我们,尤其是跟第三方平台合作,用到iframe嵌入式应用,令很多Web前端开发的童鞋脑壳疼,相信大家也入了不少坑,且踩且珍惜吧,呵呵^_^。今天抽时间整理一些出来,希望能帮助到大家。iframe自动变宽了,在IOS手机上出现滚动条第一步:定义iframe中的scrolling属性为no,设置iframe中不显示滚动条。第二步:设置iframe的样式为…

    2022年6月17日
    190
  • windows 杀进程命令_cmd命令杀进程

    windows 杀进程命令_cmd命令杀进程  命令如下:taskkill/imquantum7.exe/f  注意,顺序不能变。  /f意为强制结束进程  当然,使用进程号也行:taskkill/pid1234

    2025年9月12日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号