下面是里两个类:第一个类是html转为word,第二个是word转html(最下面附上jar包下载链接)

package com.wz.poi.wordHtml;

/**

* 2018/4/24

* @author Administrator

*

*/

import java.io.BufferedReader;

import java.io.ByteArrayInputStream;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import org.apache.poi.poifs.filesystem.POIFSFileSystem;

public class HtmlToWord {

/**

* 外部接口

* @param htmlPath html文件的路径

* @param cssPath css文件的路径

* @param wordPath word文件的路径(保存本地的路径)

* @param code 编码方式(一般都为utf-8)

* @throws Exception

*/

public void htmlToWord2(String htmlPath, String cssPath, String wordPath, String code) throws Exception {

/*InputStream bodyIs = new FileInputStream("H:\\MyTest\\Java\\test_show\\test.html");

InputStream cssIs = new FileInputStream("H:\\MyTest\\Java\\test_show\\test.css");*/

InputStream bodyIs = new FileInputStream(htmlPath);

InputStream cssIs = new FileInputStream(cssPath);

String body = this.getContent(bodyIs);

String css = this.getContent(cssIs);

// 拼一个标准的HTML格式文档

String content = "

" + body + "";

InputStream is = new ByteArrayInputStream(content.getBytes(code));

OutputStream os = new FileOutputStream(wordPath);

this.inputStreamToWord(is, os);

}

/**

* 把is写入到对应的word输出流os中 不考虑异常的捕获,直接抛出

*

* @param is

* @param os

* @throws IOException

*/

private void inputStreamToWord(InputStream is, OutputStream os) throws IOException {

POIFSFileSystem fs = new POIFSFileSystem();

// 对应于org.apache.poi.hdf.extractor.WordDocument

fs.createDocument(is, "WordDocument");

fs.writeFilesystem(os);

os.close();

is.close();

fs.close();

}

/**

* 把输入流里面的内容以UTF-8编码当文本取出。 不考虑异常,直接抛出

*

* @param ises

* @return

* @throws IOException

*/

private String getContent(InputStream... ises) throws IOException {

if (ises != null) {

StringBuilder result = new StringBuilder();

BufferedReader br;

String line;

for (InputStream is : ises) {

br = new BufferedReader(new InputStreamReader(is, "UTF-8"));

while ((line = br.readLine()) != null) {

result.append(line);

}

}

return result.toString();

}

return null;

}

}

package com.wz.poi.wordHtml;

/**

* 2018/4/24

* @author Administrator

*

*/

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.io.OutputStream;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.ParserConfigurationException;

import javax.xml.transform.OutputKeys;

import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerException;

import javax.xml.transform.TransformerFactory;

import javax.xml.transform.dom.DOMSource;

import javax.xml.transform.stream.StreamResult;

import org.apache.poi.hwpf.HWPFDocument;

import org.apache.poi.hwpf.converter.PicturesManager;

import org.apache.poi.hwpf.converter.WordToHtmlConverter;

import org.apache.poi.hwpf.usermodel.PictureType;

import org.apache.poi.xwpf.converter.core.BasicURIResolver;

import org.apache.poi.xwpf.converter.core.FileImageExtractor;

import org.apache.poi.xwpf.converter.xhtml.XHTMLConverter;

import org.apache.poi.xwpf.converter.xhtml.XHTMLOptions;

import org.apache.poi.xwpf.usermodel.XWPFDocument;

import org.w3c.dom.Document;

public class WordToHtml {

/**

* 调用的模板

* @param args

*/

public static void main(String[] args) {

try {

Word2003ToHtml("H:\\MyTest\\Java\\","test",".doc");

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (TransformerException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (ParserConfigurationException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

/**

* 将word2003转换为html文件 2017-2-27

* @param wordPath word文件路径

* @param wordName word文件名称无后缀

* @param suffix word文件后缀

* @throws IOException

* @throws TransformerException

* @throws ParserConfigurationException

*/

public static String Word2003ToHtml(String wordPath,String wordName,String suffix) throws IOException, TransformerException, ParserConfigurationException {

String htmlPath = wordPath + File.separator + wordName + "_show" + File.separator;

String htmlName = wordName + ".html";

final String imagePath = htmlPath + "image" + File.separator;

//判断html文件是否存在

File htmlFile = new File(htmlPath + htmlName);

if(htmlFile.exists()){

return htmlFile.getAbsolutePath();

}

//原word文档

final String file = wordPath + File.separator + wordName + suffix;

InputStream input = new FileInputStream(new File(file));

HWPFDocument wordDocument = new HWPFDocument(input);

WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());

//设置图片存放的位置

wordToHtmlConverter.setPicturesManager(new PicturesManager() {

public String savePicture(byte[] content, PictureType pictureType, String suggestedName, float widthInches, float heightInches) {

File imgPath = new File(imagePath);

if(!imgPath.exists()){//图片目录不存在则创建

imgPath.mkdirs();

}

File file = new File(imagePath + suggestedName);

try {

OutputStream os = new FileOutputStream(file);

os.write(content);

os.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

//图片在html文件上的路径 相对路径

return "image/" + suggestedName;

}

});

//解析word文档

wordToHtmlConverter.processDocument(wordDocument);

Document htmlDocument = wordToHtmlConverter.getDocument();

//生成html文件上级文件夹

File folder = new File(htmlPath);

if(!folder.exists()){

folder.mkdirs();

}

//生成html文件地址

OutputStream outStream = new FileOutputStream(htmlFile);

DOMSource domSource = new DOMSource(htmlDocument);

StreamResult streamResult = new StreamResult(outStream);

TransformerFactory factory = TransformerFactory.newInstance();

Transformer serializer = factory.newTransformer();

serializer.setOutputProperty(OutputKeys.ENCODING, "utf-8");

serializer.setOutputProperty(OutputKeys.INDENT, "yes");

serializer.setOutputProperty(OutputKeys.METHOD, "html");

serializer.transform(domSource, streamResult);

outStream.close();

return htmlFile.getAbsolutePath();

}

/**

* 2007版本word转换成html 2017-2-27

* @param wordPath word文件路径

* @param wordName word文件名称无后缀

* @param suffix word文件后缀

* @return

* @throws IOException

*/

public String Word2007ToHtml(String wordPath,String wordName,String suffix) throws IOException {

String htmlPath = wordPath + File.separator + wordName + "_show" + File.separator;

String htmlName = wordName + ".html";

String imagePath = htmlPath + "image" + File.separator;

//判断html文件是否存在

File htmlFile = new File(htmlPath + htmlName);

if(htmlFile.exists()){

return htmlFile.getAbsolutePath();

}

//word文件

File wordFile = new File(wordPath + File.separator + wordName + suffix);

// 1) 加载word文档生成 XWPFDocument对象

InputStream in = new FileInputStream(wordFile);

XWPFDocument document = new XWPFDocument(in);

// 2) 解析 XHTML配置 (这里设置IURIResolver来设置图片存放的目录)

File imgFolder = new File(imagePath);

XHTMLOptions options = XHTMLOptions.create();

options.setExtractor(new FileImageExtractor(imgFolder));

//html中图片的路径 相对路径

options.URIResolver(new BasicURIResolver("image"));

options.setIgnoreStylesIfUnused(false);

options.setFragment(true);

// 3) 将 XWPFDocument转换成XHTML

//生成html文件上级文件夹

File folder = new File(htmlPath);

if(!folder.exists()){

folder.mkdirs();

}

OutputStream out = new FileOutputStream(htmlFile);

XHTMLConverter.getInstance().convert(document, out, options);

return htmlFile.getAbsolutePath();

}

}

附上百度网盘下载连接:

链接:https://pan.baidu.com/s/1t_jXUq3CuhZo9j_UI4URAQ 密码:r2qi

java poi html转word_POI操作word和html相互转化相关推荐

  1. poi 5.2.2 操作word【目录】

    poi 3.17操作Word工具包,点击此处 当前版本 5.2.2 ,版本不同,写法略有差异 - poi-5.2.2 操作word [段落] - poi-5.2.2 操作word [表格] - poi ...

  2. 一、后端:针对用JAVA POI解决已知路径WORD文件增加自定义页眉,灵活设置页眉字体部分样式@2019

    一.获取添加页眉doc文件 我的项目文件路径: String reportSavePath= "****************"; DOCX文件一: changer.setAcc ...

  3. java poi无法读取word_poi,word_POI读取word内容的疑问,poi,word,java - phpStudy

    POI读取word内容的疑问 两片内容相同的word,poi分割成XWPFRun集合的时候,发现相同的段落内容有空行. word1打印的段落内容 word2打印的段落内容 代码如下 /** 替换段落中 ...

  4. java poi 上传与下载word文件

    java编程要实现对word的操作没有vb那种编程语言来得容易,得借助一些开源组件,其中就包括jacob.poi等, 而poi应用得最为广泛,对word2003和2007的读和写word操作都十分方便 ...

  5. java poi exce 移动_JAVA_POI 操作Excel

    转自: http://rensanning.iteye.com/blog/1538591# Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API ...

  6. java poi doc转docx_Java 插入Word分页符、分节符

    在Word文档中,插入分页符或分节符是一种规范文档内容布局的有效方式.特别是对于一些文档格式要求严格,排版布局严谨的文档,如论文.书籍.期刊等等,通过插入的分页符或分节符可以将每部分内容加以合理区分, ...

  7. java poi 设置标题_poi生成Word时指定文本样式,如“正文”,“标题1”,“标题2”等...

    POI生成Word时,设置段落的样式 String style = "2"; //标题2的样式 XWPFParagraph xwpfParagraph = doc.insertNe ...

  8. Java (POI) 解析不同版本的word(doc、docx)

    所需依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifa ...

  9. java poi excel读写_JAVA-POI操作Excel读写

    pom.xml org.apache.poi poi-ooxml 4.1.0 读 File xlsFile = new File("C:\\Users\\gaohuan\\Desktop\\ ...

  10. Java操作Word文档

    Java 生成 Word 的几种方案 参考 ​ 主要有这么一些工具可以使用 Jacob.Apache POI.Java2word.iText,还有一种方法是使用XML作为模板. ​ 使用 XML 的思 ...

最新文章

  1. 多篇开源CVPR 2020 语义分割论文
  2. 标签view文字自动换行
  3. 重新想象 Windows 8 Store Apps (61) - 通信: http, oauth
  4. android引用另一个项目作为library错误
  5. windows中架设基于Apache的svn服务器
  6. careyshop-商城框架系统
  7. golang搭建微服务遇到的问题(不断更新)
  8. 关于module_param()宏
  9. linux日志auditd,linux 审计工具auditd日志audit.log时间戳转换查看
  10. 20145120 《Java程序设计》实验一实验报告
  11. 自定义Excel中的快捷键(Alt +1)
  12. 【To Understand】动态规划:求最长公共子串/最长公共子序列
  13. 有了它,让我在bug面前一点也不慌!
  14. 十个随机数排列(vb代码)
  15. github电脑壁纸_超有用电脑小工具(二)附福利
  16. RabbitMQ——01安装
  17. windows xp系统重装之u盘装系统,u盘安装xp系统
  18. [数据结构 算法] A*算法--罗马尼亚度假问题(实验课作业)
  19. 打开php文件url格式,url格式是什么
  20. 计算机主机的跳线怎么接,手把手教你台式机电脑主板跳线接法

热门文章

  1. c#编写外卖系统_C#网上订餐系统
  2. html前端登录界面示例
  3. 正定矩阵与半正定矩阵定义性质与理解
  4. 「管理数学基础」1.4 矩阵理论:相似矩阵
  5. 安装原生Win7-SP1重要补丁
  6. Java 的三种 Base64
  7. html5翻牌小游戏源码,html5记忆翻牌游戏实现思路及代码
  8. vm12 和 centos 下载地址
  9. linux下连接mysql数据库命令,linux连接mysql命令
  10. win10找回自带的windows照片查看器——打开jpg、png、gif、psd其他格式的图片