失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java 将html转为word导出 (富文本内容导出word)

java 将html转为word导出 (富文本内容导出word)

时间:2019-06-15 10:43:01

相关推荐

java 将html转为word导出 (富文本内容导出word)

业务:

将富文本内容取出生成本地word文件

参考百度的方法

word本身是可以识别html标签,所以通过poi写入html内容即可

1、引用poi相关jar

2、直接生成本地doc文件(已测试)

public static Attachment createWordForHtml(String html,String fileName,String type) {Attachment uploadAttachment = null;try {String dateDir = DateUtils.formatDate(System.currentTimeMillis(), "yyyyMMdd");String savePath = dateDir+File.separator;File file = new File(Global.getConfig("userfiles.basedir")+File.separator+savePath);if(!file.exists()) {file.mkdirs();}savePath = Global.getConfig("userfiles.basedir")+File.separator+savePath+fileName+".doc";//文件路径地址:D:\apps\legislation\0126\xxx.doc //取出来的数据为转义的先转一下html = html.replace("&lt;", "<").replace("&gt;", ">").replace("&quot;", "\"").replace("&amp;", "&");//word识别的html 必须是完整的加上头和尾String content="<html><body>"+html+"</body></html>"; byte b[] = content.getBytes("GBK"); //这里是必须要设置编码的,不然导出中文就会乱码。ByteArrayInputStream bais = new ByteArrayInputStream(b);//将字节数组包装到流中 /** 关键地方* 生成word格式 */POIFSFileSystem poifs = new POIFSFileSystem(); DirectoryEntry directory = poifs.getRoot(); DocumentEntry documentEntry = directory.createDocument("WordDocument", bais); //这块需要加上 直接 poifs.createDocument(stream, name) 不行OutputStream ostream = new FileOutputStream(savePath);//导出到本地代码poifs.writeFilesystem(ostream); bais.close(); ostream.close(); //此处为持久化 不用看// File dirFile = new File(savePath);// FileInputStream fileInputStream = new FileInputStream(dirFile);// MultipartFile multipartFile = new MockMultipartFile(dirFile.getName(), dirFile.getName(),//ContentType.APPLICATION_OCTET_STREAM.toString(), fileInputStream);// uploadAttachment = FileUtils.uploadMultipartFile(multipartFile);// uploadAttachment.setBusinessType(type);//attachmentService.save(uploadAttachment);// fileInputStream.close();} catch (Exception e) {e.printStackTrace();}return uploadAttachment;}

简化:

public static void createWordForHtml(String html,String fileName) {try {String savePath = "文件路径"+fileName+".doc"; html = html.replace("&lt;", "<").replace("&gt;", ">").replace("&quot;", "\"").replace("&amp;", "&");String content="<html><body>"+html+"</body></html>"; byte b[] = content.getBytes("GBK"); //这里是必须要设置编码的,不然导出中文就会乱码。ByteArrayInputStream bais = new ByteArrayInputStream(b);//将字节数组包装到流中 /** 关键地方* 生成word格式 */POIFSFileSystem poifs = new POIFSFileSystem(); DirectoryEntry directory = poifs.getRoot(); DocumentEntry documentEntry = directory.createDocument("WordDocument", bais); OutputStream ostream = new FileOutputStream(savePath);poifs.writeFilesystem(ostream); //写入内容bais.close(); ostream.close(); } catch (Exception e) {e.printStackTrace();}}

3。前端直接下载(未测试)

//未测试 编码格式可能需要修改public void exportWord( HttpServletRequest request, HttpServletResponse response) throws Exception {try { //word内容String content="<html><body></body></html>"; byte b[] = content.getBytes("utf-8"); //这里是必须要设置编码的,不然导出中文就会乱码。ByteArrayInputStream bais = new ByteArrayInputStream(b);//将字节数组包装到流中 /** 关键地方* 生成word格式 */POIFSFileSystem poifs = new POIFSFileSystem(); DirectoryEntry directory = poifs.getRoot(); DocumentEntry documentEntry = directory.createDocument("文档名称", bais); //输出文件request.setCharacterEncoding("utf-8"); response.setContentType("application/msword");//导出word格式response.addHeader("Content-Disposition", "p_w_upload;filename=" + new String( (documentEntry.getName() + ".doc").getBytes(), "iso-8859-1"));OutputStream ostream = response.getOutputStream(); poifs.writeFilesystem(ostream); bais.close(); ostream.close(); }catch(Exception e){//异常处理} }

如果觉得《java 将html转为word导出 (富文本内容导出word)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。