介绍
在本教程中,学习如何使用Apache POI
和JExcel APIs
来处理Excel电子表格。
这两个库都可用于动态读取,写入和修改Excel电子表格的内容,并提供将Microsoft Excel集成到Java应用程序中的有效方法。
快速创建实例
前往 start.spring.io/ 如下所示
点击GENERATE
生产一个zip解压导入IDEA工具即可
Maven 依赖
首先,我们需要切换国内依赖下载源,在pom.xml
文件中<build></build>
后添加
1 | xml复制代码<repositories> |
然后将以下依赖项添加到我们的pom.xml
文件中:
1 | xml复制代码<dependency> |
Apache POI
Apache POI
库同时支持.xls
和.xlsx
文件,并且在处理Excel文件比其他Java库更为优秀。
它提供了用于为Excel文件建模的Workbook界面,以及为Excel文件的元素建模的工作表,行和单元格界面,以及两种文件格式的每个界面的实现。
使用较新的.xlsx
文件格式时,应使用XSSFWorkbook
,XSSFSheet
,XSSFRow和XSSFCell
类。
要使用旧的.xls
格式,请使用HSSFWorkbook
,HSSFSheet
,HSSFRow和HSSFCell
类。
读取 Excel
让我们创建一个方法来打开一个.xlsx
文件,然后从该文件的第一张表中读取内容。
因为单元格中数据的类型不同,读取单元格内容的方法可以自己定义。
可以使用Cell
接口的getCellTypeEnum()
方法确定单元格内容的类型。
首先,让我们获取文件的后缀来判断用HSSFWorkbook
还是XSSFWorkbook
进行处理:
1 | java复制代码String[] postfixArray = path.split("\\."); |
开始读取Excel
文件
1 | java复制代码 public static List<List<String>> readExcel(String path) throws Exception { |
获取单元格的getCellValue()
方法
1 | java复制代码public static String getCellValue(Cell cell) { |
当单元格类型的枚举值为STRING
时,将使用Cell
接口的getStringCellValue()
方法读取内容
1 | java复制代码return cell.StringCellValue() |
具有NUMERIC
内容类型的单元格可以包含日期或数字,可以通过以下方式进行读取:
1 | java复制代码if (DateUtil.isCellDateFormatted(cell)) { |
对于BOOLEAN
值,我们有getBooleanCellValue()
方法:
1 | java复制代码return String.valueOf(cell.getBooleanCellValue()); |
当单元格类型为FORMULA
时,我们可以使用getCellFormula()
方法:
1 | java复制代码return cell.getCellFormula() + ""; |
执行测试结果:
导出 Excel
Apache POI
使用上一节中介绍的相同接口来写入 Excel
文件。
让我们创建一个方法,把之前导入的数据进行导出到新的 Excel
文件:
1 | java复制代码public static void exportExcel(List<List<String>> dataList) throws IOException { |
测试
1 | java复制代码@SpringBootTest |
输出文档截图
本文转载自: 掘金