07版的出错。
如果是导入07版本的Word文件,导入过程中,会直接进入exception 而不是OfficeXmlFileException异常,怎么办啊。
下面是我的代码。
package com.huanyu.service;
import com.huanyu.dto.ImportWordParamDto;
import com.huanyu.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;
/**
* 实现导入Word文档的业务层
*
* @author Huanyu
* @date 2018/4/10
*/
public class WordService {
public ImportWordResultDto imp(ImportWordParamDto paramDto) {
ImportWordResultDto result = new ImportWordResultDto();
result.setTitle(paramDto.getTitle());
HWPFDocument document = null;
try {
document = new HWPFDocument(paramDto.getWord().getInputStream());
// System.out.println(document.getDocumentText());
// 将Word文档中的换行,转换为HTML中的换行,
result.setContent(document.getDocumentText().replace("\r", "<br/>"));
} catch (OfficeXmlFileException oe) {
System.out.println("这可能是一个07版的Word");
// 07版本
} catch (Exception e) {
result.setMsg("这可能不是一个Word文档");
// result = impForHigh(paramDto);
// return result;
} finally {
if (document != null) {
try {
document.close();
return result;
} catch (IOException e) {
e.printStackTrace();
}
}
}
XWPFDocument documentx = null;
try {
documentx = new XWPFDocument(paramDto.getWord().getInputStream());
List<XWPFParagraph> paragraphs = documentx.getParagraphs();
StringBuilder content = new StringBuilder();
for (int i = 0; i < paragraphs.size(); i++) {
if (i != 0) {
// 添加段落换行符
content.append("<br/>");
}
content.append(paragraphs.get(i).getText());
}
result.setContent(content.toString());
} catch (IOException e) {
e.printStackTrace();
} finally {
if (documentx != null) {
try {
documentx.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return result;
}
private ImportWordResultDto impForHigh(ImportWordParamDto paramDto) {
ImportWordResultDto result = new ImportWordResultDto();
result.setTitle(paramDto.getTitle());
XWPFDocument documentx = null;
try {
documentx = new XWPFDocument(paramDto.getWord().getInputStream());
List<XWPFParagraph> paragraphs = documentx.getParagraphs();
StringBuilder content = new StringBuilder();
for (int i = 0; i < paragraphs.size(); i++) {
if (i != 0) {
// 添加段落换行符
content.append("<br/>");
}
content.append(paragraphs.get(i).getText());
}
result.setContent(content.toString());
} catch (IOException e) {
e.printStackTrace();
} finally {
if (documentx != null) {
try {
documentx.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return result;
}
}22
收起
正在回答 回答被采纳积分+1
2回答
Special994
2018-04-11 13:00:24
我替换了你提供的这段代码,测试功能都能正常实现,可以上传07版的文档。可以找一下错误提示,异常信息。或者是不是在写完代码后没有Redeploy服务器而导致更新的代码功能没有实现。
从网页搭建入门Java Web2018版
- 参与学习 人
- 提交作业 1088 份
- 解答问题 10204 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星