导入导出封装的工具类 (一) 利用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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm配置Python环境_手机虚拟环境怎么设置

    pycharm配置Python环境_手机虚拟环境怎么设置问题由来从github下载的模型程序,所适包的版本不同,导致Pycharm中包混乱、版本冲突。 为每个程序单独创建虚拟环境,使得特定程序只能访问虚拟环境中的包,从而保持全局解释器的干净整洁。创建虚拟环境File-Settings-PythonInterpreter-设置图标,后续设置如下:Pycharm之创建虚拟环境在特定虚拟环境中安装包1、选择下方Terminal2、利用cd进入项目的Scripts文件夹3、输入activate4、利用pip命…

    2022年8月26日
    7
  • 大数据开发主要做什么?

    大数据开发主要做什么?写在前面本文隶属于专栏《100个问题搞定大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构和文献引用请见100个问题搞定大数据理论体系解答一个大数据平台架构通常如图所示,大数据开发涵盖了图中从下到上各层的实现,其中主要的部分是采集层、储存层、计算层、模型层和接口层,核心部分是储存层和计算层。各层中功能模块的技术实现会根据实际业务场景不同而有所变化,但仍然是围绕着储存数据和数值计算这两大核心功能来进行的。因此,大数据开发的作用主要集中在以

    2022年6月4日
    38
  • 用c语言做简单动画_用C语言编写动画

    用c语言做简单动画_用C语言编写动画你的意思还是不太明白我这有个程序你看看能不能帮我改一下#include#include#definePI3.14intcxClient,cyClient;floati,j,x,y;LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);intWINAPIWinMain(HINSTANCEhInstance,…

    2022年8月12日
    3
  • java8中的Collectors.groupingBy用法「建议收藏」

    java8中的Collectors.groupingBy用法「建议收藏」Collectors.groupingBy根据一个或多个属性对集合中的项目进行分组数据准备:publicProduct(Longid,Integernum,BigDecimalprice,Stringname,Stringcategory){ this.id=id; this.num=num; this.price=price; this.name=…

    2022年4月19日
    58
  • 基于canoe 新建一个lin工程_canoe canalyzer 区别[通俗易懂]

    基于canoe 新建一个lin工程_canoe canalyzer 区别[通俗易懂]Vector发布了CANoe以及CANalyzer7.5新版本[2010-12-28]CANoe7.5新特性??改进了“Trace”窗口的用户菜单,集成了过滤器,并增加了……例如通过此控件选择配置文件等CANoeNumericUp/DownPanelHelpButtonCANoe、CANalyzerCANoePathDialogPictu…

    2022年6月16日
    29
  • SMO算法最通俗易懂的解释

    SMO算法最通俗易懂的解释我的机器学习教程「美团」算法工程师带你入门机器学习已经开始更新了,欢迎大家订阅~任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑~此外,公众号内还有更多AI、算法、编程和大数据知识分享,以及免费的SSR节点和学习资料。其他平台(知乎/B站)也是同名「图灵的猫」,不要迷路哦~SVM通常用对偶问题来求解,这…

    2022年6月30日
    18

发表回复

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

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