基于Excel模板打印的实现及服务器部署

来源 :计算机光盘软件与应用 | 被引量 : 0次 | 上传用户:ajie830510
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:简要介绍了几种在ASP.NET环境中调用Excel打印报表的方法,针对实际需求,对比几种方法的优缺点,提出了在Web开发中基于Excel模板打印及服务器部署的可行性方案,并给出了相关的实现代码和说明。
  关键词:Asp.net;Excel模板;服务器部署
  中图分类号:TP391.13 文献标识码:A文章编号:1007-9599(2012)03-0000-02
  The Server Deployment and Realization of the Printing Based on the Excel Templates
  Liu Donghua,Cheng Yajuan
  (Nanchang Business School,Jiangxi Agricultural University,Nanchang330044,China)
  Abstract:In view of the actual demand,several methods in the ASP.NET environment about printing Excel report are introduced in this paper.The advantages and disadvantages of the several methods is compared and the deployment scheme based on the Excel template printing and server is put forward in the development of the Web,added the description and relevant code.
  Keywords:Asp.net;Excel template;Server deployment
  一、前言:
  开发基于B/S结构的教务信息系统时候,解决报表的生成和打印是不得不面对的问题,而且很多这类的系统又往往需要完成一些复杂的报表打印任务,依据笔者以往开发Asp.net程序的经验,依靠浏览器自带的页面打印功能一般不能满足实际需要,水晶报表控件使用复杂,稍有设置不当,就会造成web服务器的服务重启,由于Excel具有相对广泛的适用性和易用性,所以通过基于Excel模板打印,适应性强,控制性好。简要对比几种Web打印方案后,本文阐述在Asp.net环境中,结合开发教务系统学生平时成绩打印的实际需求,提出了基于Excel模板打印及服务器部署的可行性,取得了较为满意的效果。
  二、BS模式下几种报表打印方案及可行性分析
  根据以往开发B/S结构程序的经验,当需要在客户端用户展现并打印数据时,通常有这几种方式:1.通过浏览器直接打印;2.在Asp.net环境中利用水晶报表组件打印;3.通过在JavaScript代码中调用Excel组件打印,但是通过以上几种方式的打印,会带来诸多不便,对于IE浏览器直接打印情况,首先需要设置页边距、纸张方向,但是现在常用的Web浏览器有Microsoft IE系列、火狐、360、腾讯、搜狗等等,种类繁多……用户在设置打印时找不到设置区,其次,如果打印数据不止一页,转换第二页时,打印列标题会发生移位或变形,最后,用户电脑屏幕分辨率也会造成打印的数据排列失真;利用在Asp.net环境中调用水晶报表组件打印,因其设置繁琐,稍有设置不当,便会造成web服务器崩溃,客户端死机;对于第三种情况下的JavaScript调用Excel模板打印,需要浏览器的安全级别设置为最低,这样会使得用户的上网风险徒增。
  对比以上几种打印方案,或多或少存在这样那样的不足,通过开发教务管理系统学生平时成绩打印的实际子项目,在.NET项目中调用Microsoft Office.Interop.Excel组件,建立打印模板,可以很好地按事先设置的套用格式打印,无需设置浏览器安全级别、打印区域,分页时表列标题不变形、移位,无缝适应于各种电脑分辨率,并且服务器部署简单、快速。
  三、具体实现过程
  (一)按数据规则建立Excel模板。根据打印的报表格式(包括表头、行标题、列标题等),建立Excel文件,保存为“.xls”后缀名,在建立的Excel文件中,将打印标题设置为“顶端标题行”,并指定标题行表示方法,如图1所示。将文件存放于项目文件夹中,比如“xls_template”。利用Server的 MapPath方法获得其物理路径,示例代码如下:
  template_path = Server.MapPath("xls_template");//模板路径
  
  
  
  图1 设置Excel模板的打印标题
  (二)添加Excel引用,加载模板文件
  为项目添加Microsoft.Office.Interop.Excel名字空间引用,方可实例化Excel的Application对象类,将Application实例化后,将模板文件的workbook对象加入Application操作类中,使Excel模板文件中的worksheet为可操作的,示例代码如下:
  using Microsoft.Office.Interop.Excel; //为asp.net程序添加名字空间引用
  Application app = new Application();//为Excel.Application对象实例化
  _Workbook workbook=workbooks.Add(template_path+"temp.xls");//加载模板文件
  _Worksheet worksheet = (_Worksheet)sheets.get_Item(1);//模板只有一个sheet表
  (三)填充数据,生成下载文档
  将数据集加入泛型集合,利用foreach循环将数据填充至模板文件的特定位置,将充填数据后的模板文件克至项目“Xls_Files”文件夹中,模板打印也即不断建立不同数据集的模板文件副本。通过public void GetDown(String MyPath)方法,返回客户端的URL下载链接,示例代码如下:
  foreach (JingjieJiaowu.Model.XjManage.Xj_Zxjbxx xsmd in mdlist)
  {
  worksheet.Cells[7 + i, 1] = (i + 1).ToString();
  worksheet.Cells[7 + i, 2] = xsmd.Bjjc.ToString();
  worksheet.Cells[7 + i, 3] = xsmd.Xh.ToString();
   …}
  //利用foreach循环mdlist泛型数据集中的实体Xj_Zxjbxx,将数据填充至模板
  workbook.SaveCopyAs(Xls_Files);//利用workbook对象克隆模板至Xls_Files
  public void GetDown(string MyPath)
  {
  …
  System.IO.FileInfo file = new System.IO.FileInfo(MyPath);
  Response.Charset = "GB2312";
  Response.ContentEncoding = System.Text.Encoding.UTF8;
  …
  Response.AddHeader("Content-Length", file.Length.ToString());
  // 指定返回一个不能被客户端读取的流下载
  Response.ContentType = "application/ms-excel";
  //把文件流下载到客户端
  Response.WriteFile(MyPath);
  Response.End();// 停止页面执行
  }
  (四)根据时间差,清理服务器过时文件
  由客户端从不同时间段发起Get请求,这样一来,项目文件夹“Xls_Files”将会不断积累 Excel模板文件的副本,客户端用户需要下载的文件又是实时的,这样必然造成硬盘空间的浪费,所以根据规定的时间差清理过时文件很有必要,实现的原理是首先循环“Xls_Files”中的文件,根据文件最后创建的时间对比现在的时间,时间差超过30分钟的将会被删除,示例代码如下:
  foreach (System.IO.FileInfo f in path.GetFiles())
   {if (f.Exists)
   {TimeSpan ts1 = new TimeSpan(DateTime.Now.Ticks);//获取现在时间值
   TimeSpan ts2 = new TimeSpan(f.LastWriteTime.Ticks);//获取创建文件的时间
   TimeSpan ts = ts1.Subtract(ts2).Duration();//求时间差的绝对值
   string p = (ts.Hours*60+ts.Minutes).ToString();//转换分钟
  if (Convert.ToInt32(p) > 30)
  {f.Delete();}}}//执行删除方法
  四、部署Web服务器
  (一)配置IIS文件访问权限。在Web程序中,对于“Xls_Files”文件夹的读写权限设置尤为重要,因为在客户端请求打印时,系统会将克隆的模板文件拷贝至该文件夹中,即需要申请硬盘访问权限,设置“Xls_Files”的访问权限。
  (二)Microsoft Excel Application属性设置。考虑到客户端用户用可能用到低版本的Office,所以需要在服务器上安装Excel 2007,在组件服务中,找到DCOM配置,设置Microsoft Excel Application属性,将“选择运行此程序的用户账户“附加于具有Administrators Power UsersUsers权限组的用户。
  除设置运行的目标账户外,还需要为Microsoft Excel Application 的“安全“选项卡,配置“启动和激活权限”,点击“自定义”,为“NETWORK SERVICE”用户,设置为允许“本地启动”和“本地激活”。
  五、结束语
  本文通过开发教务管理系统中学生平时成绩打印子模块,结合实际项目需要,比对其他几种打印方案,Asp.net环境中基于Excel模板的数据导出及打印不失为一种较先进的Web报表打印解决方案,通过实际使用,部署Web服务器操作的便捷,验证了其高效、有效和可靠性,但如果能加入UI特性,使用户在下载Excel时有一个等待进度提示,将会获得较好的用户体验,从而也说明基于Excel模板数据导出及打印的技术实现还有很大的优化空间,值得进一步去研究。
  参考文献:
  [1]王兴,李菊,陈玮.ASP.NET中Excel文档生成技术研究.软件导刊,2010
  [2]李永锋,谷川.一种模板化的Web 打印方法的设计与实现.计算机应用与软件,2010(4)
其他文献
随着计算机及信息网络技术的飞速发展,计算机已普遍应用到日常工作、生活的每一个领域,但计算机网络故障一旦发生就会给日常工作、生活带来巨大不便,甚至造成巨大的损失。本文针
以河北省永清县具代表性管理模式的黄瓜日光温室为对象,通过连续2年试验,研究不同施肥处理对设施黄瓜土壤重金属Cd累积的影响。结果表明,推荐氮肥施用量(750 kg/hm2)、减氮施肥
计算机网络应用到各个领域,影响着人们的工作与生活产,成为人们生活不可或缺的一部分。人们对网络知识的了解随着网络规模的扩大在不断深入。与此而来的网络攻击等不安全因素,严
针对某铝型材公司1650UST铝型材挤压机液压系统存在的几个问题,提出几点改进方案.该改造方案在此铝型材公司已投入运行,效果良好.
本文首先对网络安全进行了概述,并详细的分析了影响计算机网络安全的因素,在此基础上对网络安全信息加密技术给出了一些看法。
当今社会随着能源高消耗时代的来临,LED照明的白热化使人们在其应用领域中投入新的目光,白光高亮LED的诞生问世,以及慢慢进入我们的生活领域,他带来了一场新兴产业革命——科技照
通过对猪乳汁Exosome中总miRNA进行分离提取,以验证其对猪繁殖与呼吸综合征病毒(PRRSV)的抑制作用。首先提取猪乳汁中的Exosome,并将提取的Exosome对感染PRRSV的MARC-145细胞
本文结合可复用IP设计理念和FPGA技术特点,设计并实现了基于Avalon总线的能完成硬件可配置和可裁减的人机界面控制器IP软核。完成了VFD荧光管位数、键盘按键个数以及LCD液晶屏
随着当前科学技术的飞速发展,构建完善的电力通信网变得越来越重要。本文主要对无线通信技术的优劣进行了分析,并研究了无线通信技术在电网通信中的应用希望能够在以后产生积极