编程语言
首页 > 编程语言> > java通过poi实现导入excel数据

java通过poi实现导入excel数据

作者:互联网

poi支持.xlsx

poi提供了HSSFWorkbook和XSSFWorkbook两个实现类。区别在于HSSFWorkbook是针对.xls文件,XSSFWorkbook是针对.xslx文件。

此处记录XSSFWorkbook方式,处理.xslx文件。

部分基本概念:

一个工作簿可以有多少工作表,一个工作表可以有多行,一行可以有多个单元格。

XSSFWorkbook:工作簿

XSSFSheet:工作表

XSSFRow:行

XSSFCell:单元格

示例:

demo.xlsx

 

 添加poi相关依赖:

1 <dependency>
2             <groupId>org.apache.poi</groupId>
3             <artifactId>poi</artifactId>
4             <version>4.0.0</version></dependency>
5         <dependency>
6             <groupId>org.apache.poi</groupId>
7             <artifactId>poi-ooxml</artifactId><version>4.0.0</version>
8         </dependency>

代码实现:

@Controller
@RequestMapping("/excel")
public class ExcelController {
    @RequestMapping("importExcel")
    public String importExcel(@RequestParam("file") MultipartFile file, HttpServletRequest request) throws IOException {
        InputStream inputStream = file.getInputStream();
        String contentType = file.getContentType();
        System.out.println("文件类型是==========="+contentType);
        String fileName = file.getOriginalFilename();
        System.out.println("文件名字是==========="+fileName);
        try {
        if (!fileName.endsWith(".xlsx")){
            throw new IllegalArgumentException("文件格式不正确!");
        }
        if (file.isEmpty()) {
            throw new Exception("文件为空!");
        }
            //根据路径获取这个操作excel的实例
            XSSFWorkbook wb = new XSSFWorkbook(inputStream);
            //根据页面index 获取sheet页
            Sheet sheet = wb.getSheetAt(0);
            //获取sheet页共有多少行
            int totalRos = sheet.getPhysicalNumberOfRows();
            System.out.println("=========总行数为:"+totalRos);
            for (int i = 0; i <totalRos; i++) {
                int lastCellNum = sheet.getRow(i).getLastCellNum();
                System.out.println("=========第"+i+"行的数据如下:=========");
                for (int j = 0; j < lastCellNum; j++) {
                    String cell = sheet.getRow(i).getCell(j).toString();
                    System.out.println(cell);
                }
                System.out.println();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "success";
    }
}

结果:

文件类型是===========application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
文件名字是===========demo.xlsx
=========总行数为:3
=========第0行的数据如下:=========
ID
姓名
年龄
工作

=========第1行的数据如下:=========
1.0
张三
20.0
家里躺

=========第2行的数据如下:=========
2.0
李四
22.0
到处闯

 

标签:xlsx,sheet,文件,excel,file,poi,java,XSSFWorkbook
来源: https://www.cnblogs.com/sq22/p/16135333.html