老师,我又有新问题了
导入07版Word时,发生错误:
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | 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版报错!
0
收起
正在回答
3回答
同学的代码在老师这里是可以正常运行的,建议同学将所有的包替换和老师一样的版本,仔细对比与导入相关的代码是否和老师的代码相同。祝学习愉快~
China_Wang
2019-06-03 18:23:17
老师,我的包是没问题的,文件也是用的老师给我的文件呢!
从网页搭建入门Java Web2018版
- 参与学习 人
- 提交作业 1088 份
- 解答问题 10204 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧