java POI操作execel导出

简介: 最近项目当中在使用POI将数据填充置row和cell等行和列,最后导出成execel到前端。一开始使用的方式是一个个去赋值,但是这样做有点麻烦,代码也有点长,不太好维护。

最近项目当中在使用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

目录
相关文章
|
8天前
|
分布式计算 DataWorks Java
DataWorks操作报错合集之在使用MaxCompute的Java SDK创建函数时,出现找不到文件资源的情况,是BUG吗
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
24 0
|
8天前
|
Java 测试技术 Python
《手把手教你》系列技巧篇(三十六)-java+ selenium自动化测试-单选和多选按钮操作-番外篇(详解教程)
【4月更文挑战第28天】本文简要介绍了自动化测试的实战应用,通过一个在线问卷调查(&lt;https://www.sojump.com/m/2792226.aspx/&gt;)为例,展示了如何遍历并点击问卷中的选项。测试思路包括找到单选和多选按钮的共性以定位元素,然后使用for循环进行点击操作。代码设计方面,提供了Java+Selenium的示例代码,通过WebDriver实现自动答题。运行代码后,可以看到控制台输出和浏览器的相应动作。文章最后做了简单的小结,强调了本次实践是对之前单选多选操作的巩固。
22 0
|
2天前
|
Java Apache
Java代码使用POI导出的单元格加上边框和背景色
【5月更文挑战第3天】Java代码使用POI导出的单元格加上边框和背景色
18 0
|
2天前
|
Java Apache
Java代码使用POI导出的单元格的字体加粗设置
【5月更文挑战第3天】Java代码使用POI导出的单元格的字体加粗设置
18 1
|
6天前
|
XML 前端开发 Oracle
16:JSP简介、注释与Scriptlet、Page指令元素、Include操作、内置对象、四种属性-Java Web
16:JSP简介、注释与Scriptlet、Page指令元素、Include操作、内置对象、四种属性-Java Web
10 2
|
8天前
|
存储 NoSQL 安全
java 中通过 Lettuce 来操作 Redis
java 中通过 Lettuce 来操作 Redis
java 中通过 Lettuce 来操作 Redis
|
8天前
|
分布式计算 DataWorks 监控
DataWorks操作报错合集之DataWorks在调用java sdk的createFile功能时报错com.aliyuncs.exceptions.ClientException: 1201111000 如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
10 1
|
9天前
|
存储 前端开发 测试技术
《手把手教你》系列技巧篇(三十五)-java+ selenium自动化测试-单选和多选按钮操作-下篇(详解教程)
【4月更文挑战第27天】本文介绍了使用Java+Selenium进行Web自动化测试时,如何遍历和操作多选按钮的方法。文章分为两个部分,首先是一个本地HTML页面的示例,展示了多选按钮的HTML代码和页面效果,并详细解释了遍历多选按钮的思路:找到所有多选按钮的共同点,通过定位这些元素并放入list容器中,然后使用for循环遍历并操作。 第二部分介绍了在JQueryUI网站上的实战,给出了被测网址,展示了代码设计,同样使用了findElements()方法获取所有多选按钮并存储到list中,然后遍历并进行点击操作。最后,文章对整个过程进行了小结,并推荐了作者的其他自动化测试教程资源。
18 0
|
10天前
|
前端开发 测试技术 Python
《手把手教你》系列技巧篇(三十三)-java+ selenium自动化测试-单选和多选按钮操作-上篇(详解教程)
【4月更文挑战第25天】本文介绍了自动化测试中如何处理单选和多选按钮的操作,包括它们的定义、HTML代码示例以及如何判断和操作这些元素。文章通过一个简单的HTML页面展示了单选和多选框的示例,并提供了Java+Selenium实现的代码示例,演示了如何检查单选框是否选中以及如何进行全选操作。
17 0
|
12天前
|
Java
【java基础】File操作详解
【java基础】File操作详解
10 0