指定html内容下载为word文档
解决思路是:获取html内容并传到后台,后台把html内容转换为输入流再传给浏览器,浏览器直接下载
1.获取html内容并传到后台
$("#zxjdck .ad-xzzy-anniu").click(function(){ //文件名 var filename = $("#zxjdck .ad-jrzy-name").text();(例如:test.doc) //文件内容 var zyHtml = '<?xml version="1.0"?> <w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"> <w:docPr> <w:view w:val="print"/><w:zoom w:percent="150"/> </w:docPr><w:body>'; zyHtml += '<w:p><w:pPr><w:outlineLvl w:val="'+outlineLvl+'"/> <w:spacing w:line="400" w:lineRule="auto"/></w:pPr> <w:r><w:rPr><w:b w:val="on"/></w:rPr> <w:t>' + 文件内容+'</w:t>/w:r></w:p>'; //模拟表单提交 var html = ''; html += '<form id="downForm" action="zxzyjd!htmlToWord.action" method="post" style="display:none">' ; html +='<input type="hidden" name="zyHtml" value="'+zyHtml+'"></input>'; html += '<input type="hidden" name="fileName" value="'+encodeURI(filename)+'.doc"></input>'; html += '</form>'; $("#zxjdck").append(html); $("#downForm").submit();
其中zyHtml部分使用wordXML处理,其中
encodeURI(filename) 为解决IE浏览器下载时文件名乱码问题。
<w:view w:val="print"/><w:zoom w:percent="150"/>表示默认打开为“页面视图”,缩放比例为150%。
具体请参考:
http://www.cnblogs.com/forlina/archive/2011/06/09/2076559.html
http://www.microsoft.com/china/msdn/library/office/office/XMLOfficeWord2003.mspx?mfr=true
2.后台把html内容转换为输入流再传给浏览器:
我使用的是注解方式配置的struts2。
在action中加入注解:
@Result(name = "download" , type = org.apache.struts2.dispatcher.StreamResult.class , value = "inputStream", params = {"contentDisposition","attachment;filename=\"${downloadFileName}\"", "inputName","inputStream", "contentType", "application/octet-stream", "bufferSize","4096" })
action中方法如下:
private String fileName; private String zyHtml; public String getZyHtml() { return zyHtml; } public void setZyHtml(String zyHtml) { this.zyHtml = zyHtml; } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public String htmlToWord(){ if(fileName!=null){ setFileName(fileName); }else{ setFileName("在线作业.doc"); } return "download"; } public String getDownloadFileName() { try { fileName = new String(fileName.getBytes(), "ISO8859-1"); return fileName; } catch (UnsupportedEncodingException e) { e.printStackTrace(); return ""; } } public InputStream getInputStream(){ try { byte b[] = zyHtml.getBytes("UTF-8"); ByteArrayInputStream bais = new ByteArrayInputStream(b); return bais; } catch (Exception e) { e.printStackTrace(); return null; } }
通过fileName和zyHtml的get,set方法获得参数。
通过htmlToWord方法找到注解的result。
result中“inputStream”对应方法getInputStream(),"downloadFileName"对用方法getDownloadFileName()。
result返回输入流给浏览器后,浏览器自动下载文件。
指定html内容下载为word文档的更多相关文章
- 将word文档A表格中的内容拷贝到word文档B表格中
Function IsFileExists(ByVal strFileName As String) As Boolean ) <> Empty Then IsFileExists = T ...
- python+selenium爬取百度文库不能下载的word文档
有些时候我们需要用到百度文库的某些文章时,却发现需要会员才能下载,很难受,其实我们可以通过爬虫的方式来获取到我们所需要的文本. 工具:python3.7+selenium+任意一款编辑器 前期准备:可 ...
- PHP将HTML的内容保存成word文档
<?php class word { function start() { ob_start(); echo '<html xmlns:o="urn:schemas-micros ...
- 批量导出access某表内容到word文档
一.需求: 需要将表中每一条记录中的某些内容导出在一个word文档中,并将这些文档保存在指定文件夹目录下 二.界面,简单设计如下: 三.添加office相关引用 添加后可在解决方案资源管理器中看到: ...
- Struts2利用iText导出word文档(包含表格)以提供下载
J2EE ExcelStrutsXML 在公司实习期间,带我的老师让我实现一功能——在显示课表的页面上上点击“导出文件“时能以word文档形式下载课表.将课表导出到excel里的功能他们已经实现了, ...
- C#读取Word文档内容代码
首先要添加引用com组件:然后引用: using Word = Microsoft.Office.Interop.Word; 获取内容: /// /// 读取 word文档 返回内容 /// //// ...
- Java 添加、读取、修改、删除Word文档属性
Word文档属性包括常规.摘要.统计.内容.自定义等,其中摘要包括标题.主题.作者.经理.单位.类别.关键词.备注等项目,通过设置这些摘要信息或自定义属性可方便对文档的管理.本文中将主要介绍对文档摘要 ...
- Java 读取txt文件生成Word文档
本文将以Java程序代码为例介绍如何读取txt文件中的内容,生成Word文档.在编辑代码前,可参考如下代码环境进行配置: IntelliJ IDEA Free Spire.Doc for Java T ...
- C# 读取txt文件生成Word文档
本文将以C#程序代码为例介绍如何来读取txt文件中的内容,生成Word文档.在编辑代码前,可参考如下代码环境进行配置: Visual Studio 2017 .Net Framework 4.6.1 ...
随机推荐
- JDK常见问题 环境变量配置
"javac不是内部命令或外部命令" Windows7 安装"jdk-6u26-windows-x64.exe"后,常提示"javac不是内部命令或外 ...
- Oracle EBS-SQL (WIP-8):检查期间任务下达记录数.sql
select WE.DESCRIPTION 任 ...
- Android开发:自定义GridView/ListView数据源
http://mobile.51cto.com/android-259861.htm 在开发中,我们常常会遇到比较复杂的GridView/ListView的布局,重新实现BaseAdapter不但能帮 ...
- android4.0 禁止横竖屏切换使用 android:configChanges="orientation|keyboardHidden"无效
android4.0 禁止横竖屏切换使用 android:configChanges="orientation|keyboardHidden"无效 在之前的版本中都是在Man ...
- POJ3322-经典的游戏搜索问题
临近毕业真是各种琐事多,好不容易写完几万字蛋疼的论文,又接着户口档案挂靠,毕业旅游,20多个离校盖章,签证被check了几个星期还没消息,希望8月初能走啊. 各种事情之下,人就是懒加心散,好久没写代码 ...
- POJ2528线段树基础
開始就直接用延迟标记搞了下.最后发现内存肯定会爆了.数据太大了. 问了瓜神,原来应该用离散化来做这题,详细见凝视 #include <cstdio> #include <cstrin ...
- 动画原理——绘制正弦函数&环绕运动&椭圆运动
书籍名称:HTML5-Animation-with-JavaScript 书籍源码:https://github.com/lamberta/html5-animation 1.正弦函数.x位置递增, ...
- CSS权威指南学习笔记 —— HTML元素分类
HTML文档由各种元素组成.比如,p.table.span等等.每个元素都会对文档的表现有所影响.CSS中,每个元素都会生成一个框(传说中的盒子),其中包含元素内容. 元素可以根据它的创建方式分为两种 ...
- bootstrap注意事项(二)
1.内联子标题 在标题内还可以包含 <small> 标签或赋予 .small 类的元素,可以用来标记副标题. <!DOCTYPE html> <html> < ...
- Oracle的完整练习,纯手工打字,可能有一两点错误。。。
PS:所有的表来源于Oracle自带的SCOTT用户下的表,初学者应该都知道的.emp表的SMITH被我删除了没有rollback,所以可能结果有点小出入. 1.选择部门30中的所有员工: SELEC ...