ASP.NET验证控件 [在.NET中嵌入Office Active控件的深度编程设计]
摘要:如何在ASP.Net中嵌入Office Active控件,如同操作Microsoft Word、Excel、PowerPoint、Visio一样,在网页上操作Office Active控件,生成我们所需要的各种Office文档。在ASP.Net的代码中得以实现,就增强了B/S应用系统的可用性及可扩展性。
关键词:Office Active控件;控件属性;保存到web;数字签名;注册Active控件
中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)18-31653-01
Design for the Depth Programme of the Office Active Embedded in the ASP.Net
YAN Heng-quan1,LI Qing-huai1,MA You-zhi2
(1.No.1 Drilling Company,CNPC Daqing Petroleum,Daqing 163413,China;2.Institute of Geophysical Exploration Company,Daqing 163357,China)
Abstract:How imbed the Office Active control in the ASP.Net,Like the operation Microsoft Word、Excel、PowerPoint、Visio similar. The operation Office Active control on the web page , Born various Office text file that we need. Can carry out in ASP.Net code, Strengthenned the B/ S application system usability and expansibility.
Key words:The Office Active control;Active control properties;Save to web, Numeral signature;Register the Active controls
用ASP.Net编程的B/S结构的应用系统越来越多,然而在B/S结构中存在报表的排版与打印很难控制缺点,虽有一些第三方控件解决了一些问题,但其功能与Word、Excel等专业办公软件相差太远。如何在ASP.Net中嵌入Office Active控件的组件程序,并能在打开的ASP.Net网页中Office Active控件与Office操作一样简单好用,功能与所直接操控Ms Office应用软件一样强大,这样我们就可以在B/S结构程序中直接生成了功能强大的办公文档,增强了B/S应用系统的功能与可用性及可扩展性。这就是本文所要解决的问题。
虽然我在网络上见过一些相关文章,有些设计很好但不是不太实用,就是离实际应用太远,没有达到实际应用到B/S系统中的水平。作者通过深入研究,充分发掘dsoframer控件功能,利用C#编程使得在ASP.NET上实现了文档新建、网络与本地打开、本地与保存至服务器、草稿修改、文件流转等功能。
1 先决条件
1.1必要条件
需要在机器上安装Ms Office应用程序。
1.2系统及IIS要求
当系统为windows 2000及IIS 5时用户ASPnet必须有存取Ms Office文档的目录读写权限,如用以启用模拟身份,Internet用户帐户(IUSR_machinename)这个用户名的权限也必须有存取Ms Office文档的目录读写权限。当系统为windows 2003及IIS 6时因默认的ASPNET这个用户就没有权限访问Word.ApplicationClass(),必须启用模拟身份,即在Web.config中加入一行。然后设置Internet用户帐户(IUSR_machinename)这个用户名的权限也必须有存取Ms Office文档的目录读写权限。
1.3控件注册
控件注册(或控件安装),控件使用之前必须进行Windows注册或安装,注册安装的方式有两种,直接注册与自动下载安装。前者需将控件文件拷贝至本地,然后使命Regsvr32.exe进行注册。命令为:regsvr32active控件文件名(ocx或dll)。
后者当打开网页时,当系统检测到系统尚未安装控件时能自动下载控件并自动安装,下载安装服务由控件的codeBase值控制。
2 用ASP.Net代码深度编程来控制嵌入网页中Office Active控件的各种行为操作
2.1建立新的Office文档可用如下语句 (如图)
建立一新word文档为:
document.all.FramerControl1.CreateNew("Word.Document");
建立一新PowerPoint演示文档为:document.all.FramerControl1.CreateNew("PowerPoint.Show");
建立一新Excel表格为:document.all.FramerControl1.CreateNew("Excel.Sheet");
建立一新Excel图表为:
document.all.FramerControl1.CreateNew("Excel.Chart");
建立一新Visio图表为:
document.all.FramerControl1.CreateNew("Visio.Drawing");
2.2打开一网络或本地打开文档
打开一本地文档
document.all.FramerControl1.showdialog(1);
打开一网络文档
document.all.FramerControl1.Open("Http://10.63.229.48/wzxt/document/文档.doc", true);(下转第1689页)
2.3深度编程之文档保存至服务器
本地保存很简单:
document.all.FramerControl1.Save("c:\ 文档.doc",true);
保存至服务器比较复杂,首先因为Web页面上的DSO打开的文件无法随表单记录提交到处理页面,所以我们把文件模拟成表单的文件域,通过接口把文件和表单元素发送到保存记录的页面(过程类似表单的提交)。上传接口函数如下:
function SaveToWeb(){
document.all.FramerControl1.HttpInit();
document.all.FramerControl1.HttpAddPostString("RecordID","200700817");
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文 document.all.FramerControl1.HttpAddPostString("UserID","马部长");
document.all.FramerControl1.HttpAddPostCurrFile("FileData", "文档.doc");
document.all.FramerControl1.HttpPost("https://localhost/wzxt/SaveDoc.aspx");
DSO上传接口将数据流以Http方式提交到保存页面,至于对数据处理就和普通的文件上传处理一样了,SaveDoc.aspx的部分C#代码如下。
string newFile = Server.MapPath(".")+"\Document\" + "文档.doc";
BinaryReader br = new BinaryReader(Request.InputStream);
br.BaseStream.Seek(0,SeekOrigin.Begin);
FileStream newDoc = new FileStream(newFile,FileMode.Create,FileAccess.Write);
BinaryWriter bw = new BinaryWriter(newDoc);
bw.BaseStream.Seek(0,SeekOrigin.End);
while(br.BaseStream.Position 本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文
