本篇内容介绍了“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 est.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    est.xlsx";
        ReloadExcelTest.readExcel(reloadPath);
    }实际应用
我们可以用集合的形式接收,或者以集合对象的形式接收,这样就能够对于读取到的数据做一个操作处理,以便于后面实现批量上传功能。
----->批量上传:前端页面上传excel文件,由系统自动导入excel的数据到数据库