Java对Excel、Word读取

由于项目需要,最近看了看对Excel、Word的读取
此处是针对MultipartFile格式的操作

/**
     * 读取XLS格式的excel
     * @param file
     * @return
     * @throws IOException
     */
    public List<Brainstorm> readXLS(MultipartFile file) throws IOException {
        List<Brainstorm> list =new ArrayList<>();

        InputStream inputStream = file.getInputStream();
        HSSFWorkbook workbook = new HSSFWorkbook(inputStream);

        //读取第一张sheet
        HSSFSheet sheet = workbook.getSheetAt(0);
        String errorMsg="";
        //遍历每一行Excel获取内容

        for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) {
            HSSFRow row = sheet.getRow(rowNum);
            if (row!=null){
                Brainstorm brainstorm = new Brainstorm();
                //使用了getStringCellValue()方法来获取值,POI会判断单元格的类型,如果非字符串类型就会抛出上面的异常。
                //所以先使用setCellType()方法先将该单元格的类型设置为STRING
                //然后poi会根据字符串读取它
                try {
                    row.getCell(0).setCellType(CellType.STRING);
                    row.getCell(4).setCellType(CellType.STRING);
                    row.getCell(5).setCellType(CellType.STRING);
                    brainstorm.setNumber(row.getCell(0).getStringCellValue());
                    brainstorm.setName(row.getCell(1).getStringCellValue());
                    brainstorm.setThumbNumber(Integer.parseInt(row.getCell(2).getStringCellValue()));
                    brainstorm.setTime(row.getCell(3).getStringCellValue());
                    brainstorm.setText(row.getCell(4).getStringCellValue());
                    list.add(brainstorm);
                }catch (Exception e) {
                    return null;
                }
            }
        }
        return list;
    }


    /**
     * 读取XLSX格式的excel
     * @param file
     * @return
     * @throws IOException
     */
    public List<Brainstorm> readXLSX(MultipartFile file) throws IOException {
        ArrayList<Brainstorm> list = new ArrayList<>();
        InputStream inputStream = file.getInputStream();
        XSSFWorkbook Workbook = new XSSFWorkbook(inputStream);
        XSSFSheet sheet = Workbook.getSheetAt(0);
        int lastRowNum = sheet.getLastRowNum();
        for (int rowNum = 1; rowNum <= lastRowNum; rowNum++) {
            XSSFRow row = sheet.getRow(rowNum);
            if (row!=null){
                Brainstorm brainstorm = new Brainstorm();
                //使用了getStringCellValue()方法来获取值,POI会判断单元格的类型,如果非字符串类型就会抛出上面的异常。
                //所以先使用setCellType()方法先将该单元格的类型设置为STRING
                //然后poi会根据字符串读取它
                try {
                    row.getCell(0).setCellType(CellType.STRING);
                    row.getCell(2).setCellType(CellType.STRING);
                    row.getCell(3).setCellType(CellType.STRING);
                    brainstorm.setNumber(row.getCell(0).getStringCellValue());
                    brainstorm.setName(row.getCell(1).getStringCellValue());
                    Double v = Double.parseDouble(row.getCell(2).getStringCellValue());
                    brainstorm.setThumbNumber(v.intValue());
                    brainstorm.setTime(row.getCell(3).getStringCellValue());
                    brainstorm.setText(row.getCell(4).getStringCellValue());
                }catch (Exception e) {
                    return null;
                }
                list.add(brainstorm);
            }
        }
        return list;
    }
/**
     * @param file
     * @return
     * @throws IOException
     */
    public BrainstormVO readBrainstormWord(@RequestPart(value = "file") MultipartFile file) throws IOException {
        InputStream inputStream = file.getInputStream();
        String fileName = file.getOriginalFilename();
        String suff = fileName.substring(fileName.lastIndexOf(".") + 1);
        String content = "";
        String word1 = "docx",word2 = "doc";
        if (suff.equals(word1)) {
            XWPFDocument xdoc = new XWPFDocument(inputStream);
            XWPFWordExtractor extractor = new XWPFWordExtractor(xdoc);
            content = extractor.getText();
            extractor.close();
        } else if (suff.equals(word2)) {
            WordExtractor ex = new WordExtractor(inputStream);
            content = ex.getText();
            System.out.println(content);
            ex.close();
        } else {
            System.out.println("此文件不是word文件");
        }
        String[] split = content.split("\n");
        BrainstormVO brainstormVO = new BrainstormVO();
        try {
            String[] split2 = split[0].split(":");
            brainstormVO.setTitle(split2[1]);
            brainstormVO.setClasses(changeString(split[1]));
            brainstormVO.setCurriculum(changeString(split[2]));
            brainstormVO.setInvitationCode(changeString(split[3]));
            brainstormVO.setGrouping(changeString(split[5]));
            brainstormVO.setValue(changeString(split[6]));
            brainstormVO.setBegin((changeString(split[7])));
            brainstormVO.setOut(changeString(split[8]));
            brainstormVO.setNum(changeString(split[9]));
        }catch (Exception e) {
            return null;
        }
        return brainstormVO;
    }

特殊说明:
在读取文档的时候,我使用了实体类一一对应,所以不具有适配性,但是思路大致一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值