老师,我又有新问题了

老师,我又有新问题了

导入07版Word时,发生错误:

http://img1.sycdn.imooc.com//climg/5cf4e834000104cb06870406.jpg

代码如下:

package com.imooc.service;

import com.imooc.dto.ImportWordParamDto;
import com.imooc.dto.ImportWordResultDto;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.poifs.filesystem.OfficeXmlFileException;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;

import java.io.IOException;
import java.util.List;

public class WordService {
    public ImportWordResultDto redWord(ImportWordParamDto wordDto) {
        ImportWordResultDto resultDto = new ImportWordResultDto();
        HWPFDocument doc = null;
        try {
            //创建word文件对象
            doc = new HWPFDocument(wordDto.getWord().getInputStream());
            resultDto.setTitle(wordDto.getTitle());
            resultDto.setContent(doc.getDocumentText().replace("/r", "<br/>"));
        }catch (OfficeXmlFileException oe){
            System.out.println("这可能是一个07版的Word");
            resultDto.setErrorMsg("这可能是一个07版的Word");
        }
        catch (IOException e) {
            resultDto.setErrorMsg("这可能不是一个Word");
            return resultDto;
        } finally {
            if (doc != null) {
                try {
                    doc.close();
                    return resultDto;
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        XWPFDocument docx = null;
        try {
            docx = new XWPFDocument(wordDto.getWord().getInputStream());
            //获取word文件的每个段落
            List<XWPFParagraph> paragraphs = docx.getParagraphs();
            //通过for循环得到每个段落中的内容
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < paragraphs.size(); i++) {
                if (i != 0) {
                    sb.append("<br/>");
                }
                sb.append(paragraphs.get(i));
            }
            resultDto.setContent(sb.toString());
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (docx != null) {
                try {
                    docx.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return resultDto;
    }
}
package com.imooc.servlet;

import com.imooc.dto.ImportWordParamDto;
import com.imooc.dto.ImportWordResultDto;
import com.imooc.dto.ParamDto;
import com.imooc.service.WordService;
import com.imooc.util.RequestUtil;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "ImportWordServlet", urlPatterns = "/importWord")
public class ImportWordServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //判断请求类型是否为MultipartContent
        if (ServletFileUpload.isMultipartContent(request)) {
            ParamDto dto = RequestUtil.parsRequest(request);
            ImportWordParamDto wordDto = new ImportWordParamDto();
            wordDto.setTitle(dto.getParamMap().get("title"));
            wordDto.setWord(dto.getFileMap().get("word"));
            WordService word = new WordService();
            ImportWordResultDto resultDto = word.redWord(wordDto);
            request.setAttribute("result", resultDto);
            request.getRequestDispatcher("/importWordResult.jsp").forward(request, response);
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

导入03版时正常显示。07版报错!

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学的代码在老师这里是可以正常运行的,建议同学将所有的包替换和老师一样的版本,仔细对比与导入相关的代码是否和老师的代码相同。祝学习愉快~

提问者 China_Wang 2019-06-03 18:23:17

老师,我的包是没问题的,文件也是用的老师给我的文件呢!

http://img1.sycdn.imooc.com//climg/5cf4f5120001c29203990465.jpg

好帮手慕柯南 2019-06-03 18:20:36

同学你好!

  1. 检查去一下是否缺少了jar包

    http://img1.sycdn.imooc.com//climg/5cf4f44b0001d79003270250.jpg

  2. 建议同学导入老师提供的word模板试试。在资料《项目静态资源》中有提供。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师