在Web项目服务端访问Office文件

时间:2024-02-09 点赞:46116 浏览:90179 作者原创标记本站原创

本论文是一篇文件方面学术论文模板,关于在Web项目服务端访问Office文件相关毕业论文的格式范文。免费优秀的关于文件及方法及进程方面论文范文资料,适合文件论文写作的大学硕士及本科毕业论文开题报告范文和学术职称论文参考文献下载。

【摘 要 】在Web项目中引用Office.Interop程序集来控制Office文件,是一种非常方便快捷的方法.本文以服务端访问Excel文件为例,分析了这种解决方案的设计方法及利弊.

【关 键 词 】Web;ASP.NET;Office;Interop

ASP.NET可以很方便地创建基于CS结构的Office解决方案,但在Web项目中,若要对服务端Office文件进行一些访问处理,通常是引用Microsoft.Office.Interop程序集来解决问题.这是一种是使用托管代码实现自动化,由运行库可调用包装RCW充当托管代码与 COM 服务器之间媒介的解决方案.下面以一个Excel应用为例,谈谈这种方案的设计方法及利弊.

一、项目说明

Web项目需要依据WEB服务端的Excel模板文件,生成一份最新数据的Execl报表文件,供客户端浏览下载.

二、设计说明

1、在服务端安装Office软件.因为解决方案要调用Office软件里的一些COM组件,所以需要根据项目需求,在Web服务器上安装相应的Office2003或2007版本的Office软件.注意不要安装精简版的,因为这种版本可能会删除了一些COM组件,使用程序运行过程发生错误.

2、在项目中引用Microsoft.Office.Interop.Excel程序集.Office2003和Office2007对应的版本分别是11.0.0.0和12.0.0.0.随后托管语言利用这些程序集实现与COM服务器之间的通信.

3、模拟身份验证用户.文件的创建、COM组件的调用、Office进程的中止在服务端都需要一定权限.除可采用在服务端授予ASPNET用户相应权限这种方法外,在运行代码的特定部分模拟服务端身份验证用户也不失为一个较好的解决方法.后者在项目设计时比较简单,同时也具有编程可控的特点.在微软帮助和支持中心《如何在ASP.NET应用程序中实现模拟》(文章编号为306158)一文中,设计了impersonateValidUser()和undoImpersonation()两个方法来模拟身份和取消模拟身份.

4、创建Excel报表文件.通过调用System.IO.File.Copy()方法,将Excel模板文件复制为新的Excel报表文件.

5、实例化工作表对象.在网页代码中引用Microsoft.Office.Interop.Excel命名空间,并分别创建相应的Application应用程序、Workbook工作簿、Worksheet工作表实例.

6、编辑单元格.通过调用Worksheet.get_Range()方法,对Range对象的Value2、Font、RowHeight、ColumnWidth等属性进行赋值,从而更新单元格数据及格式.

7、保存工作簿,并退出应用程序.调用Workbook.Close()方法保存并关闭工作簿,再调用Application.Quit()方法退出Excel应用程序.

8、中止进程.实例化Excel应用程序时,在服务端会产生一个大约10M的“EXCEL.EXE”进程,退出Excel应用程序并不能关闭此进程.对于.NET的垃圾回收器,释放对象并不表示对象已被清除,这就使得该进程在内存中的保留时间可能长于预期时间,即使直接调用一些垃圾回收方法,也很难立即释放进程资源.比较彻底的做法是调用Process.Kill()方法中止进程,但这种方法也会带来误删进程的风险.

9、取消模拟身份.完成所有的工作后,及时调用undoImpersonation()方法取消模拟身份.

三、设计代码

using System.IO,

using System.Reflection,

using Excel 等于 Microsoft.Office.Interop.Excel;

using System.Diagnostics,

protected void ExcelExport()

{

//模拟身份验证用户

if (!(impersonateValidUser(“userName”,“domain”,“password”)))

{

lblExportMsg.Text 等于 “模拟身份失败!”;

return;

}

//生成Excel报表文件

string BaseFile 等于 Server.MapPath(“~/XLT/EXCEL模板.xls”);

string NewFile 等于 @”d:\ExportFiles\newReport.xls”

File.Copy(BaseFile,NewFile,true);

//创建工作表实例

Missing Miss 等于 Missing.Value;

Excel.Application ExcelApp 等于 new Microsoft.Office.Interop.Excel.ApplicationClass(),

Excel.Workbook OpenWorkbook 等于 ExcelApp.Workbooks.Open(@NewFile,Miss,Miss,Miss,Miss,Miss,Miss,Miss,Miss,Miss,Miss,Miss,Miss,Miss,Miss);

Excel.Worksheet Sheet1 等于 (Excel.Worksheet)OpenWorkbook.Sheets[1];


//更新单元格内容

Sheet1.get_Range(“”,

“”).Value2 等于 “new value”;

//保存并退出Excel

OpenWorkbook.Close(true,Miss,Miss);

ExcelApp.Quit();

//释放资源

foreach (Process thisproc in Process.GetProcessesByName(“EXCEL”))

{

try { thisproc.Kill();}

catch { }

}

//取消模拟身份验证用户

undoImpersonation();

}

四、结语

在Web项目中控制Office文件,有很多种解决方案.使用Interop程序集,是一种非常方便快捷的方法.但这种方法也有它的一些弊端,比如在服务端部署时需安装相应版本的Office软件、COM组件内存资源消耗大、内存资源难回收等,这些都是在解决方案中需要改进的地方.

相关论文

如何将web项目部署在tomcat上

关于项目及容器及绿色版方面的免费优秀学术论文范文,项目有关论文目录生成,关于如何将web项目部署在tomcat上相关论文范本,对写作项目论文。

Android客户端访问WebService的实现

本文关于操作系统及数据库及计算机科学方面的免费优秀学术论文范文,操作系统类论文范文集,与Android客户端访问WebService的实现相关硕士学。

江苏重点推进五大养老服务项目

本论文是一篇关于养老保险相关保险学论文提纲,关于江苏重点推进五大养老服务项目相关硕士学位毕业论文范文。免费优秀的关于养老保险及需求。