POI读取excel文档

若如初见. 提交于 2019-12-09 16:30:33
//                <!--读取excel文件-->
//               <dependency>
//               <groupId>org.apache.poi</groupId>
//               <artifactId>poi</artifactId>
//               <version>3.9</version>
//               </dependency>
//               <dependency>
//               <groupId>org.apache.poi</groupId>
//               <artifactId>poi-ooxml</artifactId>
//               <version>3.9</version>
//               </dependency>
//               <dependency>
//               <groupId>org.apache.poi</groupId>
//               <artifactId>poi-ooxml-schemas</artifactId>
//               <version>3.10-FINAL</version>
//               </dependency>


@RestController
@RequestMapping("/workbook")
public class WorkBookTool {
    private final static String xls = "xls";
    private final static String xlsx = "xlsx";

    @PostMapping("/readExcel")
    public static List<String> readExcel(MultipartFile file) {
        getWorkBook(file);
        List<String> strList = new ArrayList();
        try {
            String fileName = file.getOriginalFilename();
            InputStream inputStream = file.getInputStream();
            //定义工作簿
            XSSFWorkbook workbook = null;
            workbook = new XSSFWorkbook(inputStream);
            // 以上拿到excel表格 到workbook
            int num = workbook.getNumberOfSheets();
            System.out.println("判断sheet页数,共" + num + "页。");
            // 得到一个工作表
            Sheet sheet = workbook.getSheetAt(0);
            String sheet1Name = sheet.getSheetName();
            System.out.println("当前打印的sheet页" + sheet1Name);
            // 一共有几行
            int sheetRowNum = sheet.getLastRowNum();
            System.out.println(sheetRowNum);
            System.out.println(sheet.getPhysicalNumberOfRows());
            XSSFRow rowss;
            Iterator<Row> rowIterator = sheet.iterator();
            while (rowIterator.hasNext()) {
                rowss = (XSSFRow) rowIterator.next();
                Iterator<Cell> cellIterator = rowss.cellIterator();
                String str = "|";
                while (cellIterator.hasNext()) {
                    Cell cell = cellIterator.next();
                    switch (cell.getCellType()) {
                        case Cell.CELL_TYPE_STRING:
                            str = str + cell.getStringCellValue() + "|";
                            break;
                        case Cell.CELL_TYPE_NUMERIC: //数值类型
                            BigDecimal bd = new BigDecimal(cell.getNumericCellValue());
                            String str2 = String.valueOf(bd);
                            if(str2.contains(".")){
                                DecimalFormat df1 = new DecimalFormat("0.0");
                                str2 = df1.format(cell.getNumericCellValue());
                            }
                        str = str + str2 + "|";
                        break;
                    }
                }
                System.out.println(str);
                strList.add(str);
            }
        } catch (Exception e) {
            System.out.println("Excel data file cannot be found!");
        }
        return strList;
    }

    public static Workbook getWorkBook(MultipartFile file) {
        //获得文件名
        String fileName = file.getOriginalFilename();
        //创建Workbook工作薄对象,表示整个excel
        Workbook workbook = null;
        try {
            //获取excel文件的io流
            InputStream is = file.getInputStream();
            //根据文件后缀名不同(xls和xlsx)获得不同的Workbook实现类对象
            if (fileName.endsWith(xls)) {
                //2003
                workbook = new HSSFWorkbook(is);
            } else if (fileName.endsWith(xlsx)) {
                //2007
                workbook = new XSSFWorkbook(is);
            }
        } catch (IOException e) {
            System.out.println("Excel data file cannot be found!");
        }
        return workbook;
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!