一文搞定POI,再也不怕excel导入导出了 | 您所在的位置:网站首页 › 练字的基本步骤口诀 › 一文搞定POI,再也不怕excel导入导出了 |
一文搞定POI,再也不怕excel导入导出了
写在前面
在Java日常开发过程中,实现Excel文件的导入导出功能是一项常见的需求。 通过使用相关的Java库,如Apache POI、EasyPoi或EasyExcel,可以轻松地实现Excel文件的读写操作。 而这篇文章将介绍如何在Java中使用Apache POI、EasyPoi 和EasyExcel库来进行Excel文件的导入和导出操作,帮助您快速掌握这一实用的技能。 一、使用场景下面是excel导入导出的几个最常用的使用场景。 ①企业管理系统:企业管理系统通常需要导入员工信息、客户信息、销售数据等大量数据到系统中,以及导出报表、数据分析结果等信息。 ②学校教务系统:学校教务系统可能需要导入学生信息、课程表、成绩等数据,以及导出学生成绩单、教师工资表等信息。 ③电子商务平台:电子商务平台需要导入商品信息、订单数据等内容,以及导出销售报表、库存清单等信息,方便管理和分析。 ④ 人力资源管理系统:人力资源管理系统需要导入员工档案、薪资信息等数据,以及导出薪资条、考勤报表等信息,方便人力资源管理和工资结算。 ⑤ 医院信息系统:医院信息系统可能需要导入患者信息、医疗记录等数据,以及导出医疗报告、统计分析等信息,方便医护人员进行医疗服务和管理。 以上仅是一些常见的使用场景,实际上各种系统中的Excel导入导出功能可以根据具体需求进行定制和扩展 二、三个库简介 1、Apache POIApache POI是一个流行的Java库,用于处理Microsoft Office格式文件,包括Excel、Word和PowerPoint。它提供了丰富的API,可以创建、读取和修改各种类型的Office文档。 官网:https://poi.apache.org/ 优点: 功能强大:支持处理复杂的Excel文件,包括单元格、样式、图表等内容。 稳定性高:作为一个成熟的开源项目,得到广泛支持和持续维护。 灵活性:可以满足各种定制化需求,可以实现复杂的Excel处理功能。 缺点: 学习曲线较陡:对于初学者来说,学习成本可能较高。 性能相对较低:在处理大量数据时,性能可能受到一定影响。 2、EasyPoieasypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 语言(熟悉的表达式语法),完成以前复杂的写法 官网: https://gitee.com/lemur/easypoi 优点: 简单易用:EasyPoi 提供了简洁的 API 接口,使得 Excel 操作更加便捷。 功能丰富:支持 Excel 文件的导入导出、模板导出、校验等多种功能。 易于扩展:EasyPoi 基于 Apache POI 和 JexcelApi,可以方便地扩展和定制功能。 文档齐全:EasyPoi 提供了详细的文档和示例,便于开发人员学习和使用。缺点: 功能有限:相比于 Apache POI,EasyPoi 可能在一些高级功能上有所限制。 可能存在性能问题:由于封装层的存在,EasyPoi 在处理大量数据时可能存在一定的性能损耗。 3、EasyExcelEasyExcel是一个阿里巴巴基于Apache POI封装的开源框架,专注于Excel文件的读写操作。它提供了简洁易用的API,简化了Excel处理的流程。 官网:https://easyexcel.opensource.alibaba.com/ 优点: 简单易用:提供了简洁的API,使用起来非常方便。 高性能:在处理大量数据时具有较高的性能,能够快速导入导出Excel文件。 支持注解:支持使用注解配置Excel文件的导入导出规则,简化了开发过程。缺点: 功能相对有限:相比Apache POI,功能相对简单,可能无法满足某些复杂的Excel处理需求。 定制化能力较弱:定制化能力不如Apache POI灵活。不同版本的Excel在功能和格式上可能会有一些差异。所以后续在处理不同版本的excel时,会有少许不同 以下是一些常见的Excel版本之间的区别 1、Excel 97-2003(.xls) 最大行数为65536行,最大列数为256列。 支持的最大单元格格式有限。 不支持新的Excel特性,如条件格式、表格样式等。 文件大小限制为2GB。 2、Excel 2007及以上版本(.xlsx) 最大行数和列数均有较大提升,支持数百万行数和16384列。 支持更多的单元格格式和样式。 引入了新的功能,如条件格式、表格样式、数据透视表等。 支持更多的图表类型和图表样式。 文件大小限制较大,最多可达16,384 x 1,048,576个单元格。 四 、Excel 基本结构介绍Java是面向对象的操作语言,万物皆对象。了解了Excel基本结构有助于我们将Excel与Java中对象关联起来 工作簿(Workbook): Excel文件以工作簿的形式存在,一个工作簿可以包含多个工作表(Sheet) 工作表(Sheet): 每个工作表由行(Row)和列(Column)组成,交叉形成单元格(Cell),用于存储数据、文本、公式等内容 单元格(Cell): Excel中的最小单位,用于存储数据或公式。每个单元格有一个唯一的地址,例如A1、B2等 行(Row)和列(Column): 行是水平方向的一组单元格,列是垂直方向的一组单元格。行用数字标识,列用字母标识 公式(Formula): Excel支持使用公式进行计算和数据处理。公式以等号(=)开头,可以引用其他单元格的数值或内容进行运算 函数(Function): Excel提供了大量的内置函数,用于进行各种复杂的计算和数据处理,如SUM(求和)、AVERAGE(平均值)、VLOOKUP(垂直查找)由于Excel分为03版本和07版本,所以我们在使用的时候需要 注: 处理03版本excel时,主要使用HSSFWorkbook、HSSFSheet、HSSFRow、HSSFCell等对象来操作Excel文件; 处理07版本及之后版本excel时,主要使用XSSFWorkbook、XSSFSheet、XSSFRow、XSSFCell等对象来操作Excel文件 其他操作基本是一样的,了解这个之后,后续操作就很简单了~ 5.1 基本写操作 5.1.1 03版本写excel① 引入依赖 org.apache.poi poi 4.1.2 junit junit 4.13.2 test joda-time joda-time 2.10.10②实例代码 public class AppTest { String filepath="E:\\xiezhrspace\\excel-demo\\fileoutput\\"; @Test public void poiexcel03Test() throws Exception{ //1、创建一个工作簿 Workbook workbook = new HSSFWorkbook(); //2、创建一个工作表 Sheet sheet = workbook.createSheet("第一个工作表"); //3、创建一行 //3.1 创建第一行 Row row1 = sheet.createRow(0); //3.2 创建第二行 Row row2 = sheet.createRow(1); //3.3 创建第三行 Row row3 = sheet.createRow(2); //4 创建一个单元格 //4.1 创建第一行第一个单元格 Cell cell11 = row1.createCell(0); //4.2 创建第一行第二个单元格 Cell cell12 = row1.createCell(1); //4.3 创建第二行第一个单元格 Cell cell21 = row2.createCell(0); //4.4 创建第二行第二个单元格 Cell cell22 = row2.createCell(1); //4.5 创建第三行第一个单元格 Cell cell31 = row3.createCell(0); //4.6 创建第三行第二个单元格 Cell cell32 = row3.createCell(1); // 5 设置单元格的值 //5.1 设置第一行第一个单元格 cell11.setCellValue("个人公众号"); //5.2 设置第一行第二个单元格 cell12.setCellValue("XiezhrSpace"); //5.3 设置第二行第一个单元格 cell21.setCellValue("个人博客"); //5.4 设置第二行第二个单元格 cell22.setCellValue("www.xiezhr.cn"); //5.5 设置第三行第一个单元格 cell31.setCellValue("当前时间"); //5.6 设置第三行第二个单元格 String curdate = new DateTime().toString("yyyy-MM-dd HH:mm:ss"); cell32.setCellValue(curdate); FileOutputStream fileOutputStream = new FileOutputStream(filepath + "poiexcel03.xls"); workbook.write(fileOutputStream); fileOutputStream.close(); workbook.close(); } }③ excel写出效果 07 版本依赖与处理03版本的有点不一样,代码基本上不变 ① 所需依赖 org.apache.poi poi-ooxml 4.1.2② 代码修改 07版本操作与03版本操作基本没什么变化,我们只需将03版本代码中new HSSFWorkbook() 修改成new XSSFWorkbook() new FileOutputStream(filepath + "poiexcel03.xls") 修改成new FileOutputStream(filepath + "poiexcel07.xlsx") 即可 Workbook workbook = new XSSFWorkbook(); ...省略 FileOutputStream fileOutputStream = new FileOutputStream(filepath + "poiexcel07.xlsx");③ 最终效果 ①代码 @Test public void testBigDateExcelTest() throws Exception { Workbook workbook = new HSSFWorkbook(); Sheet sheet = workbook.createSheet("大文件导出测试"); long begin = System.currentTimeMillis(); for (int rowNum = 0; rowNum |
CopyRight 2018-2019 实验室设备网 版权所有 |