• 导出word使用模版


    在我们做我们的小组项目的时候,刚开始的时候我们用到的是Mvc+EF,用上了我们的ITOO框架。在最开始的计划,我们要用到瑞郎报表。可是呢,由于工期原因以及技术暂时没有实现,我们不得不想一个比较折中的方法,就是导出模版,让大家直接签到。

    当我看到这个,并写出代码之后,感觉真的很不可思议,代码真的是太神奇了,师哥师姐也很神奇。现在给大家分享一下。


    首先呢,我们要先用Word制作一个Word模版:

    保存成Word 97-2003文档

       


    其实后台服务端,打击也都知道,那个是相当简单的。我们来看一下MVC的cotroller里面和导出方法的JS方法是如何写的?

    public ActionResult GetBidTRecordinfo(string bidProjectId)
            {
                //创建一个前台接收信息的实体集合
                List<BidSignViewModel> bidSign = new List<BidSignViewModel>(); 
              
                //创建一个接收后台传值得得集合
                List<BidTRecorderViewModel> bidVM = new List<BidTRecorderViewModel>();
                //调用方法
                bidVM = ibidTRservies.GetBidTrecordInfo(bidProjectId);
                if (bidVM.Count == 0)
                {
                    bidSign = null;
                }else {
                    for (int i = 0; i < bidVM.Count; i++) {
                        BidSignViewModel enSign = new BidSignViewModel();
                        enSign.BidName = bidVM[i].CompanyName;
                        enSign.BidAdress = bidVM[i].Address;
                        enSign.BidTel = bidVM[i].Tel;
                        enSign.OrganizationCode = bidVM[i].OrganizationCode;
    
                        bidSign.Add(enSign);
                    }   
                }
                return Json(bidSign, JsonRequestBehavior.AllowGet);
    
            }
            #endregion
    
            #region 生成投标供应商签到表  ----李卫中---2015年12月17日00:36:45
            /// <summary>
            /// 生成投标供应商签到表
            /// </summary>
            /// <returns></returns>
            public ActionResult ExportBidSign() {
                //获取评标编号的招标信息
                string BidProjectId = Request["BidProjectId"].ToString();
    
                //获取项目名称
                string  BidRecordName = ibzrservies.GetBidRecordName(BidProjectId);
    
                #region 获取招标文件制作模板----李卫中----2015年12月17日00:37:19
                //获得程序集根目录
                string rootPath = AppDomain.CurrentDomain.BaseDirectory;
    
                //招标文件模板路径
                var mainDocPath = rootPath + "/Content/投标供应商签到表/" + "投标供应商签到表.doc";
                Aspose.Words.Document docMain = new Aspose.Words.Document(mainDocPath);
                DocumentBuilder builder = new DocumentBuilder(docMain);
                #endregion
    
                #region 替换模板中的内容常用字段---李卫中---2015年12月17日00:37:32
                //获取系统当前时间
                DateTime now = DateTime.Now;
                //替换招标项目
                docMain.Range.Replace("{ProjectName}", BidRecordName, false, false);
                //替换招标编号         
                docMain.Range.Replace("{BidProjectId}", BidProjectId, false, false);
                //替换评标报告生成日期
                docMain.Range.Replace("{Now}", now.Year + "年" + now.Month + "月" + now.Day + "日", false, false);
    
                #endregion
    
                #region 嵌入评委打分表格表头----李卫中---2015年12月17日00:37:44
                //开始添加值
                builder.MoveToBookmark("table");
                //添加表头数据
                ArrayList tableHeadArray = new ArrayList();
                //添加固定的前两列表头信息
                tableHeadArray.Add("序号");
                tableHeadArray.Add("供应商名称");
                //builder.RowFormat.CellSpacing = 50;
                tableHeadArray.Add("供应商代表签字");
                tableHeadArray.Add("供应商地址");
                tableHeadArray.Add("组织机构代码证");
                tableHeadArray.Add("联系电话");
                tableHeadArray.Add("备注");
                //根据招标编号,获取所对应的所有评分项信息,评分名称作为第二列之后的表头信息
                //获取评委打分项
                for (int j = 0; j < tableHeadArray.Count; j++)
                {
                    //插入单元格
                    builder.InsertCell();
                    //设置单元格边框样式及颜色
                    builder.CellFormat.Borders.LineStyle = LineStyle.Single;
                    builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
                    //设置单元格宽度
                    builder.CellFormat.Width = 180;
                    builder.Write(tableHeadArray[j].ToString());
    
                }
                builder.EndRow();
                #endregion
    
                #region  在word.doc中嵌入数据----李卫中---2015年12月17日01:03:29
                //创建一个接收后台传值得得集合,查询招标商信息
    
                List<BidTRecorderViewModel> bidVM = ibidTRservies.GetBidTrecordInfo(BidProjectId);
                IList<IList<string>> companyName = new List<IList<string>>();
    
                for (int i = 0; i < bidVM.Count; i++)  //控制行数
                {
    
                    //赋值区域
                    List<string> tempList = new List<string>();
                    tempList.Add((i + 1).ToString());
                    tempList.Add(bidVM[i].CompanyName);
                    tempList.Add(" ");
                    tempList.Add(" ");
                    tempList.Add(" ");
                    tempList.Add(bidVM[i].Tel);
                    tempList.Add(" ");
                    companyName.Add(tempList);
    
    
    
                }
                for (int i = 0; i < bidVM.Count; i++)  //控制行
                {
                    for (int j = 0; j < tableHeadArray.Count; j++)//控制列
                    {
                        //插入单元格
                        builder.InsertCell();
                        //设置单元格边框样式及颜色
                        builder.CellFormat.Borders.LineStyle = LineStyle.Single;
                        builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
                        //设置单元格宽度
                        builder.CellFormat.Width = 180;
                        builder.Write(companyName[i][j].ToString());
    
                    }
                    builder.EndRow();
                }
    
    
                #endregion
    
                //将替换后的评标报告保存在以下路径
                string outputPath = rootPath + "/Content/投标供应商签到表.doc";
                //生成的评标报告的名称
                string filename = "投标供应商签到表" + now.ToString("yyyy年mm月dd日") + ".doc";
                //保存文件
                docMain.Save(outputPath);
                //将文件返回给视图
                return File(outputPath, "application/msword", filename);
            }
            #endregion
    


    JS模块:

    <span style="font-size:18px;">//生成评分统计表
    function ExportScoreSummary() {
        var BidProjectId = document.getElementById('BidProjectId').value;
    
        window.location.href = '/BidSign/ExportBidSign?BidProjectId=' + BidProjectId;
    }
    </span>


    总结

    每一个模块方面学习,到要先接受,然后再创新,在我们暂时没有能力创新的时候,先学会接受,学会学习,才是一个更好的选择!


  • 相关阅读:
    内存堆与栈的区别
    深度理解相对路径和绝对路径
    INFO:InstallAnywhere的Enterprise版本和Standard版本的主要区别
    HOWTO:InstallShield中如何调用批处理文件
    HOWTO:InstallScript工程中如何在用户协议界面中默认为接受协议
    HOWTO:InstallShield中如何通过脚本获取“My Documents”路径
    INFO:InstallShield工程中关于.NET依赖项的编译扫描警告
    InstallShield Kevin Wan博客文章索引列表(001~100)
    HOWTO:在InstallShield脚本中打开一个URL链接
    INFO:在InstallShield中修改安装包压缩.cab包的大小
  • 原文地址:https://www.cnblogs.com/DoubleEggs/p/5747169.html
Copyright © 2020-2023  润新知