写在前面的话:写博客的初衷是想把自己学到的知识总结下来,在写的过程中,相当于又把知识梳理了一遍。我坚信有输入,有输出,技术才会进步。我一般都会自己写一个小demo,测试没有问题,再进行整理。

在实际做项目的过程中,遇到问题,也是各种查,所以很感谢把知识分享出来的人,而我也愿意把我自己学到的知识写下来,一来是巩固,二来如果能帮助到别人,那就更好啦。

我写的有些方法,看来有些笨,我也会继续探索和研究。如有更好的方法,可以一起交流。

正文开始~~~~

一、jQuery-Word-Export导出word的优缺点

优点:简单快捷,支持谷歌,火狐,360浏览器。

缺点:1.不支持ie(我看网上说支持ie8以后的版本,但是我试的ie9,报错,继续研究)

2.有些样式不管用(还在研究中)

二、用法

1.先在页面上引用jquery-1.10.2.min.js文件

2.接着引用FileSaver.js和jquery.wordexport.js两个文件

(下载地址:https://github.com/Jasmine1227/jquery.wordexport.js.git)

3.写上如下代码即可实现 $("#ReportToWord").wordExport();   其中ReportToWord是要导出div的id。

记录下遇到的问题

一、问题:页面中是input标签,导出来样式如下,不好看

解决方案:(1)我定义了两个div,main是页面上实际显示的,ReportToWord是导出的div

ReportToWord和main中一模一样,把main中的input标签换成对应的label,如下所示 (注:对应的样式要一致)

(2)导出的时候,进行赋值操作

function setValue() {
//院系
$("#lbl_college").html($("#college").val());
//$("#reportName").attr("value", $("#reportName").val()); //专业
$("#lbl_major").html($("#major").val());
//年级班级
$("#lbl_class").html($("#class").val());
//学生姓名
$("#lbl_studentName").html($("#studentName").val());
//指导教师姓名
$("#lbl_teacherName").html($("#teacherName").val());
//主要内容
$("#lbl_mainContent").html($("#mainContent").val());
}

二、问题:报表中含有ECharts表格,直接导出,word中没有Echarts

解决方法:

1.在ReportToWord(实际导出的div)中添加如下代码:

2.在进行导出的时候,将ECharts保存为图片,存储到项目中固定的文件夹下。

View代码如下(如保存成功,则将图片地址赋值到src中):

    //将charts保存为图片
function SaveChartsPic() {
var picBase64Info = myChart.getDataURL();//获取echarts图的base64编码,为png格式。
$.ajax({
url: "/ReportForms/Export",
data: { base64Info: picBase64Info, fileType: 'png' },
type: "Post",
async: false,
dataType: "json",
success: function (data) {
//如果成功,记录图片的地址
if (data.code == 1) {
$('#img_Charts').attr('src', data.imgUrl);
}
//如果失败,弹出提示
else {
alert(data.Message);
}
},
})
}

3.Controller代码:

         /// <summary>
/// 保存图片
/// </summary>
/// <param name="base64Info"></param>
/// <param name="fileType">保存的图片类型</param>
/// <returns></returns>
[HttpPost]
public ActionResult Export(string base64Info, string fileType)
{
Result result = new Result();
try
{
string[] arr = base64Info.Split(new string[] { "base64," }, StringSplitOptions.RemoveEmptyEntries);
byte[] byteArray = Convert.FromBase64String(arr[]);
string path = AppDomain.CurrentDomain.BaseDirectory + chartsPath;
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
//确保图片名称的唯一性
Guid chartsID = Guid.NewGuid();
string filename = chartsID + "." + fileType;
string savePath = path + filename; FileStream fs = System.IO.File.Create(savePath);
fs.Write(byteArray, , byteArray.Length);
fs.Close(); result.code = ;
result.message = "保存图片成功";
//返回相对地址
//_rsp.Data = FileTools._ReportChartsPath + filename;
//返回绝对地址
result.imgUrl = savePath;
}
catch (Exception ex)
{
result.code = -;
result.message = "引发异常";
}
return Json(result, JsonRequestBehavior.AllowGet);
}

 三、问题:导出的word中没有样式

解决方法:(1)在jquery.wordexport.js文件中,找到如下代码:

(2)将你的样式代码放到双引号中(这个还有待研究别的方法)

四、源码地址

      开发工具:VS2015社区版,框架:MVC

git地址:https://github.com/Jasmine1227/ExportToWord.git

利用jQuery-Word-Export导出word (含ECharts)的更多相关文章

  1. 利用模板导出文件(二)之jacob利用word模板导出word文件(Java2word)

    https://blog.csdn.net/Fishroad/article/details/47951061?locationNum=2&fps=1 先下载jacob.jar包.解压后将ja ...

  2. .net core 使用NPOI填充Word模板导出Word

    最近工作用到在Word模板插入数据库数据,导出一个带数据的Word文件,想起来之前操作Word都是用微软提供的Microsoft.Office.Interop.Word,而在最新的..NET CORE ...

  3. C#实现按Word模板导出Word(加书签bookMark)

    本方法是针对word导出操作,需要制作好的模板文件 模板.doc 引入应用Microsoft.Office.Interop.Word 11.0  (office2003) 导出文件注意:有时候迅雷会在 ...

  4. java根据word模板导出word文件

    1.word模板文件处理,如下图所示在word 文档中填值的地方写入占位变量 2.将word文档另存为xml文件.编辑如下图,找到填写的占位,修改为${bcrxm}格式 3.将文件后缀名改为.ftl文 ...

  5. 使用POI导出Word(含表格)的实现方式及操作Word的工具类

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  6. 记录一下表格用poi的导出word

    也是网上找的代码http://53873039oycg.iteye.com/blog/2152009,但是横向合并单元格没成功.只能用很蠢的办法建立了好多table public void fillT ...

  7. Spring MVC中使用POI导出Word

    内容绝大部分来源于网络 准备工作 准备[XwpfTUtil]工具类(来源于网络) 准备word模版 下载[XwpfTUtil]工具类 import org.apache.poi.xwpf.usermo ...

  8. 数据导出之winfrom导出word(二)

    本篇文章介绍了根据word模板导出word文档的方法. 一.获取模板地址 WordDocFileHelper WordTem = new WordDocFileHelper(); string pat ...

  9. SpringBoot集成文件 - 如何基于POI-tl和word模板导出庞大的Word文件?

    前文我们介绍了通过Apache POI通过来导出word的例子:那如果是word模板方式,有没有开源库通过模板方式导出word呢?poi-tl是一个基于Apache POI的Word模板引擎,也是一个 ...

随机推荐

  1. Excel中筛选两个表中相同的数据和快速填充一列的公式

    将两个工作表放在一个文件中,使用if函数和countif函数判断 =if(判断条件countif(区域,条件),真值,[假值]) 实例 =if(countif(Sheet2!$A$1:$A$44,A2 ...

  2. 剑指offer:表示数值的字符串

    题目描述: 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3. ...

  3. 使用iis部署asp.net core 中的坑

    使用vs2017创建asp.net core mvc 模板网站然后部署到iis上,如果在一直有并发访问的情况下,操作iis重新绑定域名操作,网站会直接挂掉,重启应用池也没用,而且部署到iis上容易出现 ...

  4. JVM探究之 —— 类加载过程

    1. 类加载是什么 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制. 与那些在编译时需要进行连 ...

  5. epool与select有什么区别

    select在一个进程中打开的最大fd是有限制的,由FD_SETSIZE设置,默认值是2048.不过 epoll则没有这个限制,它所支持的fd上限是最大可以打开文件的数目,这个数字一般远大于2048, ...

  6. Visionworks OpenVX

    [TOC] Visionworks OpenVX OpenVX heterogeneous computation framework Spec OpenVX 1.2源碼解析 - 目錄結構 除了官方的 ...

  7. wordpress 获取指定作者的所有 post meta

    $args = array( 'post_type' => array( 'post','knowledgebase'), 'post_status' => 'publish', 'aut ...

  8. Thinkphp5 实现动态模板主题多个模板切换

    在项目开发过程中会遇到一个网站有不同风格,本文详细介绍Thinkphp5 实现模板主题多个模板切换 一.在Config中配置view_path模板路径代码如下 1 2 3 4 5 6 7 8 9 10 ...

  9. 批量删除sql语句

    SET @I = 148;SELECT CONCAT("DELETE FROM supplier_change_log WHERE old_supplier_id=4194 AND id&g ...

  10. adb 命令简介

    adb命令配置 1 在命令行下,进入用户目录 cd $HOME 2 .bash_profile文件 输入下行命令获取当前文件列表: ls -al 查看文件列表,如果没有.bash_profile文件, ...