Java利用OpenOffice进行将word,excel转化成html解析到界面(下)
2018-04-02 10:46
591 查看
这一篇是结合上一篇OpenOffice基础上,对具体web工程中的需求进行整合以及测试。
首先导入jsoup的jar
以上为博主自己封装解析类,解析后的字符串可以拼接在个人需求中任意需要调用的地方。
说明:首先定义一个字符串变量,然后根据前台获取上传office文件的路径,解析后调用转换方法,将office文件转换成html然后调用博主所写封装类返回字符串类型,然后接到contentadd,最后拼接在所需要拼接的地方。
其中docx为上传到服务器文件,解析自动生成html和jpg文件,证明程序无误,功能实现。
ppt文件的话会将每一个幻灯片切换成图片显示,OpenOffice对PPT解析不是非常良好,博主不太推荐, 不过他也是可以解析的。
到这里需求就基本完成了,剩下一些小的优化工作在此就不赘述了,如有问题可以留言告知博主,也可能会有更好的解析方法,大家可以留言交流学习,希望我这篇文章可以帮助到大家,不忘初心,我们不止会New
1.封装解析类
我们在上篇已经获取如果解析成html文件,但是要把html转换成为字符串显示,我们还必须调用一个jar包,进行解析:首先导入jsoup的jar
package com.dean.ssm.util.officeparsing; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.servlet.http.HttpServletRequest; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; public class GetTextFromWord { /** * 解析html文件中的body并将body内容截取成String类型 * * @author ff * @param filename * html文件路径 * @return */ public String HtmlToString(String filename, HttpServletRequest request, String modelSize) { System.out.println(modelSize); String path = request.getSession().getServletContext().getRealPath(""); String filepath = path.substring(0, path.length() - 3); File input = new File(filename); try { Document doc = Jsoup.parse(input, "gb2312"); String html = doc.html(); Document doc1 = Jsoup.parseBodyFragment(html); Element body1 = doc1.body(); StringBuffer sb = new StringBuffer(); sb.append(body1.toString()); String sb1 = new String(sb); // 获取body内容的正则 String bodyReg = "<BODY .*</BODY>"; Pattern bodyPattern = Pattern.compile(bodyReg); Matcher bodyMatcher = bodyPattern.matcher(sb1); if (bodyMatcher.find()) { // 获取BODY内容,并转化BODY标签为DIV sb1 = bodyMatcher.group().replaceFirst("<body", "<div") .replaceAll("</body>", "</div>"); } // 调整图片地址 String infoConductFile = "<img SRC=\"" +"/infoConductFile/" + modelSize + "/"; sb1 = sb1.replaceAll("<img SRC=\"", infoConductFile); // 删除不需要的标签 sb1 = sb1 .replaceAll( "<[/]?(xml|XML|del|DEL|ins|INS|title|TITLE|meta|META|[ovwxpOVWXP]:\\w+)[^>]*?>", ""); System.out.println(sb1); return sb1; } catch (IOException e) { e.printStackTrace(); } return ""; } }
以上为博主自己封装解析类,解析后的字符串可以拼接在个人需求中任意需要调用的地方。
2.Ctrl层调用
// 对模版内容进行解析 // 1.根据ID查url String contentadd = ""; if (icc.getModelId() != null || icc.getModelId() != -1) { ModelManage modelManage = modelManageService .selectByPrimaryKey(icc.getModelId()); // 2.进行后缀判断,调用解析方法 if (modelManage != null) { if (modelManage.getModelUrl().endsWith(".doc") || modelManage.getModelUrl().endsWith(".docx") || modelManage.getModelUrl().endsWith(".xls") || modelManage.getModelUrl().endsWith(".xlsx")) { String path = request.getSession().getServletContext().getRealPath(""); String filepath = path.substring(0, path.length() - 3); GetTextFromWord getTextFromWord = new GetTextFromWord(); int tmp = modelManage.getModelSize().indexOf("\\"); contentadd = getTextFromWord.HtmlToString(filepath+ "infoConductFile" + "\\" + modelManage.getModelSize(), request,modelManage.getModelSize().substring(0, tmp)); } } } // 3.拼接内容,存入数据库 String ctnt = URLDecoder.decode( URLDecoder.decode(icc.getContent()), "utf-8"); icc.setContent(ctnt + contentadd);
说明:首先定义一个字符串变量,然后根据前台获取上传office文件的路径,解析后调用转换方法,将office文件转换成html然后调用博主所写封装类返回字符串类型,然后接到contentadd,最后拼接在所需要拼接的地方。
3.文件存储路径以及格式
博主使用的是服务器存储文件,所以当上传的时候直接会在服务器生成html文件和图片文件。其中docx为上传到服务器文件,解析自动生成html和jpg文件,证明程序无误,功能实现。
ppt文件的话会将每一个幻灯片切换成图片显示,OpenOffice对PPT解析不是非常良好,博主不太推荐, 不过他也是可以解析的。
到这里需求就基本完成了,剩下一些小的优化工作在此就不赘述了,如有问题可以留言告知博主,也可能会有更好的解析方法,大家可以留言交流学习,希望我这篇文章可以帮助到大家,不忘初心,我们不止会New
相关文章推荐
- Java利用OpenOffice进行将word,excel转化成html解析到界面(上)
- 关于java使用jacob调用word,ppt,excel等的转化为html的问题
- 利用jodconverter(基于OpenOffice服务)将word文件(*.doc)转化为html格式
- Java下利用Jackson进行Json的转化解析
- 使用java将 WORD,EXCEL转化为HTML
- 用java把MS office(ppt、excel、word、txt) 转换成 flash,并进行播放(linux、windows)
- 利用jsoup 对 HTML 文档进行解析和操作
- 利用jacob将excel另存为html格式文件,利用jacob将word另存为html格式文件
- JAVA解析文件pdf、word、excel
- JAVA读取WORD,EXCEL,PDF,TXT,RTF,HTML文件文本内容的方法示例
- JAVA读取WORD,EXCEL,PDF,TXT,RTF,HTML文件文本内容的方法示例
- jacob包进行word转html,excel转html
- java OpenOffice把word转html(Convert word to html)
- JAVA读取WORD,EXCEL,PDF,TXT,RTF,HTML文件文本内容的方法示例 .
- asp.net Aspose.Word 利用邮件合并功能 操作word模板 生成word。asp.net NPOI 对excel进行操作,生成excel
- [转]java平台,使用openoffice将word转换为html
- java利用poi对excel进行操作可导入导出
- java平台下通过jacob对excel,word进行打印等操作
- JAVA:借用OpenOffice将上传的Word文档转换成Html格式
- 利用com调用ie进行html解析