美文网首页
java POI操作execel导出

java POI操作execel导出

作者: zhuyuansj | 来源:发表于2018-06-12 00:55 被阅读0次

    最近项目当中在使用POI将数据填充置row和cell等行和列,最后导出成execel到前端。一开始使用的方式是一个个去赋值,但是这样做有点麻烦,代码也有点长,不太好维护。于是换了种方案,先导入固定模板,然后将要添加数据的那部分动态添加过去并且进行填充,这样做的好处有利于后期的维护和可扩展,模板可以随时换。在这过程中也学到了不少POI方面的知识。下面总结一下.

      HSSFWorkbook与xssfworkbook的区别:前者只支持xls(2003)的表格,后者支持xlsx(2007)的表格
    

    我这里主要介绍HSSFWorkbook,

    以下是HSSFWorkBook常用代码

    Workbook workBook=new HSSFWorkbook();//工作簿        定义一个新工作簿
    Sheet sheet = workBook.createSheet("第一个sheet页"); //工作表       表创建一个sheet工作表  
    Row row = sheet.createRow(0); //行       下标从0开始,0代表创建第一行,1代表创建第二行
    Cell cell = row.createCell(0); //单元格    创建一个单元格,0代表第一个,1代表第二个
    Cell cell = row.createCell(1);//在第一行中创建第二个单元格,也就是第一行,第二列
    cell.setCellValue(1);   //给单元格设置值,当然设置数字,string都行,8大基本数据类型设置都可以,new Data日期也可以
    ----------合并单元格-----------------------------------------------------------------------
      Cell cell=row.createCell(1);
            cell.setCellValue("单元格合并测试");
            sheet.addMergedRegion(new CellRangeAddress(
                    1, // 起始行
                    2, // 结束行
                    1, // 其实列
                    2  // 结束列
            ));
    ----------合并单元格---------------------------------------------------------------
    <!-- poi execel要引入的包 -->
    <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.9</version>
    </dependency>
    <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.17</version>
    </dependency>
    <!-- poi execel要引入的包 -->
    

    由于输出到execel的时候,如果一下子导出到execel当中的话,有的时候很难看清问题,可以复制一个row,然后输出一次流,再进行查看。

    FileOutputStream fileOut1 = null;
    try {
        fileOut1 = new FileOutputStream(saveFileName);
        workbook.write(fileOut1);
        fileOut1.close();
        fileOut1.flush();
    }catch (Exception e){
    
    }
    System.out.println("查看表格");
    

    遇到的一个坑.模板导入后写入数据一切OK,但是导出的xls文件有几十兆,打开以后直接保存一下,文件又变成几十KB,但是这个非常影响性能,经过调试发现,我的sheet1里面row复制完继续在sheet1里操作,我理解的时候可能被当做sheet间的复制了,所以我createSheet了以后,把sheet1的内容复制到新建的sheet后就没这问题了。

    相关文章推荐:索引链接
    自己写的POIUtil,主要解决从不同的HSSFWorkbook复制sheet以及根据单元格插入图片等
    Excel动态合并行、合并列
    Java Web利用POI导出Excel简单例子
    POI 方式导出文件,浏览器(适用Edge浏览器)文件名乱码解决
    POI使用详解
    java 实现 excel sheet 拷贝到另一个Excel文件中 poi

    相关文章

      网友评论

          本文标题:java POI操作execel导出

          本文链接:https://www.haomeiwen.com/subject/dkikeftx.html