Java利用poi读取Excel详解实现
前言
用户可以直接读取本地文件,也可以通过上传文件的形式读取excel
注意:poi对于读取到空白行的时候,会默认的认为是最后一行,将不会再读取空白行下面的数据
第一步导入依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
第二步实现测试类+测试
- 创建ReloadExcelTest .java文件
- 此时找到excel的文件路径,写文件全名:路径+文件全名
- 例:String reloadPath=“D:\ExcelTest\test.xlsx”;
- windows路径之间加\\
- 测试
package tech.niua.admin.outputvalue.util.reloadexcel;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import tech.niua.admin.outputvalue.domain.OutputValue;
import java.io.IOException;
public class ReloadExcelTest {
public static void readExcel(String reloadPath) throws IOException {
//1.获取工作簿
XSSFWorkbook workbook = new XSSFWorkbook(reloadPath);
//2.获取工作表
XSSFSheet sheet = workbook.getSheetAt(0);
//获取行
//cell.setCellType(Cell.CELL_TYPE_STRING); //将不同类型的数据类型转为String
int lastRowNum = sheet.getLastRowNum();
for (int i = 1; i <= lastRowNum; i++) {
OutputValue outputValueEntity = OutputValue.builder().build();
Row rowValue = sheet.getRow(i);
//获取每一行中每一个单元格的数据的数据
for (int j = 0; j < 4; j++) {
DataFormatter formatter = new DataFormatter();
String value = formatter.formatCellValue(rowValue.getCell(j));
System.out.print(value+" ");
}
System.out.println();
}
}
}
注意:4.1.2版本的poi已经不在使用cell.setCellType(Cell.CELL_TYPE_STRING);这种对于读取到数据设置为String类型的这种形式,将不再支持
改用为:
DataFormatter formatter = new DataFormatter();
String value = formatter.formatCellValue(rowValue.getCell(j));
此时value就是我们读取到的值,可以做一个相应的转换存储到集合或者对象的形式接收
测试
public static void main(String[] args) throws IOException {
String reloadPath="D:\\ExcelTest\\test.xlsx";
ReloadExcelTest.readExcel(reloadPath);
}
实际应用
我们可以用集合的形式接收,或者以集合对象的形式接收,这样就能够对于读取到的数据做一个操作处理,以便于后面实现批量上传功能。
----->批量上传:前端页面上传excel文件,由系统自动导入excel的数据到数据库:
到此这篇关于Java利用poi读取Excel详解实现的文章就介绍到这了,更多相关Java读取Excel内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341