mvc+js实现自动生成.doc文件

简介: mvc+js实现自动生成.doc文件

引言


最近在项目中遇到了这样的需求,就是我们需要打印非常多的东西,但是这些东西并不是单纯的在数据库中存放着,当我需要的时候,直接取出来显示在报表中就可以了,在开始的时候我们采用了锐浪报表来实现,但是在实现的过程中遇到了很多的问题,比如在mvc框架下面报表的显示问题等等,因为项目工期的原因,我们没有非常多的时间和精力去研究这些技术,所以我们采用了另一种方式就是直接生成.DOC文件以后在打印。下面和大家分享这个技术的实现过程。


第一、制作word文件模板



20151217125309266.gif

注解:上面的花括号里面的变量是我们在生成文件的时候需要我们自动填充的。将制作好的模板放在我们前台的某个文件夹下面,方便以后我们调用。


第二、代码实现

 

  1、controller里面的代码

        public ActionResult ExportInviteBidFile()
        {
            //获取评标编号的招标信息
            string BidProjectId = Request["BidProjectId"].ToString();
            string BidRecordName = iBidZRecordInfoService.GetBidNameByBidProjectId(BidProjectId);
            string BidOpenTime = DateTime.Parse(iBidZRecordInfoService.GetBidOpenTime(BidProjectId)).ToLongDateString().ToString();
            #region 获取招标文件制作模板
            //获得程序集根目录
            string rootPath = AppDomain.CurrentDomain.BaseDirectory;
            获得招标评标报告模板
            //string strMainFileName = bidresultInfo.BidType.Trim();
            //招标文件模板路径
            var mainDocPath = rootPath + "/Content/评标报告/" + "廊坊市政府采购评标报告.doc";
            Aspose.Words.Document docMain = new Aspose.Words.Document(mainDocPath);
            DocumentBuilder builder = new DocumentBuilder(docMain);
            #endregion
            #region 替换模板中的内容常用字段
            //获取系统当前时间
            DateTime now = DateTime.Now;
            //替换招标编号         
            docMain.Range.Replace("{BidProjectId}", BidProjectId, false, false);
            //替换招标项目名称           
            docMain.Range.Replace("{BidRecordName}", BidRecordName, false, false);
            //替换开标时间          
            docMain.Range.Replace("{BidOpenTime}", BidOpenTime, false, false);
            //替换评标报告生成日期
            docMain.Range.Replace("{Now}", now.Year + "年" + now.Month + "月" + now.Day + "日", false, false);
            #endregion
            //将替换后的评标报告保存在以下路径
            string outputPath = rootPath + "/Content/评标报告.doc";
            //生成的评标报告的名称
            string filename = "廊坊市政府采购评标报告" + now.ToString("yyyy年mm月dd日") + ".doc";
            //保存文件
            docMain.Save(outputPath);
            //将文件返回给视图
            return File(outputPath, "application/msword", filename);
        }

2、js代码


//生成评分统计表
function ExportScoreSummary() {
    var BidProjectId = document.getElementById('BidProjectId').value;
    window.location.href = '/BiddingResult/ExportScoreSummary?BidProjectId=' + BidProjectId;
}


第三、效果展示


当你点击生成文件的时候,会提示下载还直接打开,这样我们就会自动将模板中的变量替换成我们需要的东西,像制作文件的日期,项目编号等这些比较灵活的内容!这样我们就可以按照你家给你的样式来实现打印了


小结


在开始的时候我们打算利用报表来实现这些功能,但是在实现的过程中遇到了一些问题,这些问题都是比较棘手的问题,所以在和其他人交流以后感觉不是很好实现,所以就换了一种思路来实现这些东西,对于报表这方面的内容,在以后的学习中会会继续深入的研究,现在这个阶段因为项目的工期方面的原因,没有时间来研究。所以在我们遇到了比较难的问题的时候我们可以尝试着换一种思路!!

目录
相关文章
|
10天前
|
JavaScript 前端开发 容器
AJAX载入外部JS文件到页面并让其执行的方法(附源码)
AJAX载入外部JS文件到页面并让其执行的方法(附源码)
14 0
|
1月前
|
JavaScript
uni-app中关于格式化时间的js文件
uni-app中关于格式化时间的js文件
30 0
|
2月前
|
JavaScript 前端开发 内存技术
js文件的入口代码及需要入口代码的原因
js文件的入口代码及需要入口代码的原因
|
3月前
|
XML JSON JavaScript
|
3月前
|
存储 JavaScript 前端开发
只使用简单的 JavaScript 创建文件共享型网站
只使用简单的 JavaScript 创建文件共享型网站
39 0
只使用简单的 JavaScript 创建文件共享型网站
|
3月前
|
JavaScript Android开发
AutoJs4.1.0实战教程---js文件打包发布成APK文件
AutoJs4.1.0实战教程---js文件打包发布成APK文件
92 0
AutoJs4.1.0实战教程---js文件打包发布成APK文件
|
4月前
|
设计模式 前端开发 Java
了解 Spring MVC 架构、Dispatcher Servlet 和 JSP 文件的关键作用
Spring MVC 是 Spring 框架的一部分,是一个 Web 应用程序框架。它旨在使用 Model-View-Controller(MVC) 设计模式轻松构建Web应用程序。
63 0
|
4月前
|
JSON JavaScript 前端开发
前端 ex2json 用于 vue/react/js 将 xls、xlsx、csv 文件转成 json 数组
前端 ex2json 用于 vue/react/js 将 xls、xlsx、csv 文件转成 json 数组
93 0
|
4月前
|
JSON JavaScript 数据格式
NPM 发包 js 文件并支持 ts 使用(包含 gulp 打包压缩)
NPM 发包 js 文件并支持 ts 使用(包含 gulp 打包压缩)
57 0
|
1月前
|
JSON JavaScript 前端开发
vue项目使用Print.js插件实现PDF文件打印
vue项目使用Print.js插件实现PDF文件打印
33 0