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
到處闖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM