写在前面的话:写博客的初衷是想把自己学到的知识总结下来,在写的过程中,相当于又把知识梳理了一遍。我坚信有输入,有输出,技术才会进步。我一般都会自己写一个小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. 范仁义html+css课程---11、html补充知识

    范仁义html+css课程---11.html补充知识 一.总结 一句话总结: 小于号(<):< 大于号(>):> 空格:  二.html 字符实体 1.小于号(<)和大 ...

  2. GPU和显卡是什么关系?GPU会取代CPU吗?

      一.GPU是什么?与显卡是什么关系?安装在什么地方?有单独的GPU板卡吗? GPU就是图像处理芯片,外表与CPU有点相似.显卡的芯片,AMD的一个技术,相当于电脑的处理器CPU,只不过它是显卡的大 ...

  3. 苹果手机微信浏览器select标签选择完成之后页面不会自动回到原位

    说明: html默认select选择框控件在IOS的浏览器中 是底部弹出下拉选择. 这样到时页面位置错位,选择结束后对应不少元素的点击事件不响应. 这样看起来问题不大,但是选择完成之后点击确定提交弹出 ...

  4. linux下检查网络连通情况

    MTR是一种简单的跨平台命令行网络诊断工具,它将常用的traceroute和ping程序的功能组合到一个工具中. 与traceroute类似, mtr输出关于数据包从运行mtr的主机到用户指定的目标主 ...

  5. HSBImageView--android--可以设置HSB值的imageview

    package guide.yunji.com.guide.view; import android.content.Context; import android.content.res.Typed ...

  6. iOS逆向(五)-ipa包重签名

    为什么要重签名? 1.在没有源代码的情况下,你已经对某个应用进行了资源修改(比如修改了启动图或图标等).修改完成以后,如果想要让APP可以正常使用,该APP一定要重新签名然后压缩成IPA文件. 2.如 ...

  7. python MySQLdb 字典(dict)结构数据插入mysql

    背景: 有时候直接操作数据库字段比较多,一个个写比较麻烦,而且如果字段名跟数据库一致,那生成为字典后,是否能直接使用字典写入数据库呢,这样会方便很多,这里简单介绍一种方法. 实例: 1. 假设数据库表 ...

  8. python工程设置工具(pipenv)

    原始安装 pip工具 --- 包安装工具, 可以从Python包索引hub上安装,也可以使用自定义的hub. 命令: pip install xxx 缺点: 1.命令方式, 一次只能安装一个包, 对于 ...

  9. 解决ImportError: No module named utils

    转载:https://blog.csdn.net/weixin_43979572/article/details/86159265 在Python中遇到了导包错误,其实包已经有了.原因是我再B文件的a ...

  10. IEEE-754格式标准,float,

    float float类型数字在计算机中用4个字节存储.遵循IEEE-754格式标准: 一个浮点数有2部分组成:底数m和指数e 底数部分 使用二进制数来表示此浮点数的实际值指数部分 占用8bit的二进 ...