Java poi导入word文件提取内容

一、需求描述

java web项目从前台上传word格式文件,后台接收文件并提取word内容保存至数据库。

二、依赖jar包

这里操作的是maven项目,所有依赖jar包均可到maven仓库进行免费下载。具体如下:

Java poi导入word文件提取内容_第1张图片

三、后台代码

这里的java_web项目采用SpringMVC的内置文件上传方式进行接收解析,具体如下:

    /**
     * 提取word文件内容
     * @param file
     * @param request
     * @return
     * @throws IOException 
     * @throws IllegalStateException 
     */
    @RequestMapping(value = "/getPapers", method = RequestMethod.POST, produces = { "text/html;charset=utf-8" })
    @ResponseBody
    private Object getPapers(@RequestParam("file") MultipartFile multfile,HttpServletRequest request) throws IllegalStateException, IOException {
        // 获取文件名
        String fileName = multfile.getOriginalFilename();
        //判断是否为word类型文件
        if (!fileName.endsWith(".doc") && !fileName.endsWith(".docx")) {
            System.out.println("此文件不是word文件!");
        }
        //当前系统的临时文件地址
        String realPath = request.getSession().getServletContext().getRealPath("/static/app/appkmbgszh/uploadFile");
        // 用uuid作为文件名,防止生成的临时文件重复
        String fileAdd = UUID.randomUUID().toString() + ".docx";
        // 构建一个临时文件
        File uploadFile = new File(realPath, fileAdd);
        //将上传的MultipartFile格式文件转换为创建的新文件
        multfile.transferTo(uploadFile);
        //获取新文件的绝对路径
        String filePath = uploadFile.getAbsolutePath();

        String buffer = "";
        JSONObject msg = new JSONObject();
        try {
            InputStream inIo = new FileInputStream(uploadFile);
            //提取文本内容
            if (fileName.endsWith(".doc")) {
                WordExtractor ex = new WordExtractor(inIo);
                buffer = ex.getText();
                ex.close();
            } else if (fileName.endsWith(".docx")) {
                OPCPackage opcPackage = POIXMLDocument.openPackage(filePath);
                POIXMLTextExtractor extractor = new XWPFWordExtractor(opcPackage);
                buffer = extractor.getText();
                extractor.close();
            }
            //删除上传存放的临时文件
            uploadFile.delete();
            msg.put("status", true);
            msg.put("msg", buffer);
        } catch (Exception e) {
            e.printStackTrace();
            msg.put("status", false);
            msg.put("msg", "文件内容提取失败");
        }
        return retString(msg);
    }

    /**
     * json格式化;
     * @param ret
     * @return
     */
    private String retString(JSONObject ret) {
        String jsoStr = "";
        try {
            jsoStr = JSON.json(ret);
        } catch (IOException e) {
            e.printStackTrace();
            return jsoStr;
        }
        return jsoStr;
    }

 

你可能感兴趣的:(Java,poi)