java POI HTML转Word 两种方式

前端开发   发布日期:2025年05月08日   浏览次数:191

说明,不论使用哪种方式,都不能引用CSS来渲染样式,而是使用style,或者将样式放在当前页面的<style></style>中

方法一、

1、引用的jar包

<dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>poi</artifactId>
  <version>4.1.0</version>
</dependency>

2、核心代码

String html = "<div>测试内容</div";

POIFSFileSystem poifs = null;
FileOutputStream ostream = null;
ByteArrayInputStream bais = null;
String uuid = "测试.doc";
File file = null;

try {
  //HTML内容必须被<html><body></body></html>包装
  fileParam.setcContent("<html><body>" + html + "</body></html>");
  byte[] b = fileParam.getcContent().getBytes();
  bais = new ByteArrayInputStream(b);
  poifs = new POIFSFileSystem();
  DirectoryEntry directory = poifs.getRoot();
  //WordDocument名称不允许修改
  directory.createDocument("WordDocument", bais);
  ostream = new FileOutputStream(uuid);
  poifs.writeFilesystem(ostream);//当前目录下就生成了一个测试.doc的文档
} catch (Exception e) {
  logger.error("exception is {}", e);
} finally {
  IOUtils.closeQuietly(poifs);
  IOUtils.closeQuietly(ostream);
  IOUtils.closeQuietly(bais);
  try {
    FileUtils.forceDelete(file);
  } catch (Exception e2) {
  }
}

 

方法二

  1. /**
  2. * word格式html的标签头
  3. */
  4. public static final String HTML_TAG_BGN = "<html xmlns=\"http://www.w3.org/TR/REC-html40\" xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:w=\"urn:schemas-microsoft-com:office:word\" xmlns:m=\"http://schemas.microsoft.com/office/2004/12/omml\"><head><meta name=\"ProgId\" content=\"Word.Document\" /><meta name=\"Generator\" content=\"Microsoft Word 12\" /><meta name=\"Originator\" content=\"Microsoft Word 12\" /> <!--[if gte mso 9]><xml><w:WordDocument><w:View>Print</w:View></w:WordDocument></xml><[endif]-->";
  5. public filePath downloadWordReport(String htmlForPrint) {
  6. try {
  7. String wordString = htmlForPrint.replaceAll("<head>", "").replaceAll("<html>", HTML_TAG_BGN );
  8. String fileName = new String("测试文件.doc".getBytes(), "UTF-8");
  9. //上传文件方法
  10. return this.upload(new ByteArrayInputStream(wordString.getBytes()), fileName);
  11. } catch (Exception e) {
  12. return null;
  13. }
  14. }

  

以上就是java POI HTML转Word 两种方式的详细内容,更多关于java POI HTML转Word 两种方式的资料请关注九品源码其它相关文章!