dsoframer控件学习小结
				
									
					
					
						|  | 
							admin 2013年1月22日 21:17
								本文热度 6685 | 
					
				 
				
文章简介:dsoframer是微软提供一款开源的用于在线编辑、调用Word、 Excel 、PowerPoint等的ActiveX控件。国内很多著名的OA中间件,电子印章,签名留痕等大多数是依此改进而来的。 | 
一、先注册一下DSOFramer.ocx
    操作:将.ocx复制到C:\windows\system32目录下,
         开始->运行->regsvr32 DSOFramer.ocx , 系统会提示DSOFramer.ocx中的DllRegisterServer成功。
二、添加DSOFramer.ocx到你的项目中
    操作:先说明一下,我用VS 2005 ,其他VS版本可能操作会有不同,操作应该也类似自己试试,问题应该不大。
          在你要访问DSOFramer.ocx的目录上点选右键菜单中的“添加现有项”,找到DSOFramer.ocx,确定。
三、在网页中加载DSOFramer
     新建Office.aspx
    添加如下代码:
     <object id="MyOffice" name = "MyOffice" style="LEFT: 0px; WIDTH: 100%; TOP: 0px; HEIGHT: 100%"
    classid="clsid:00460182-9E5E-11D5-B7C8-B8269041DD57" codebase="dsoframer.ocx#version=2,2,0,0" >
    </object>
     [注]:VS 2005对语法的要求贼多,什么ID的值要用""括起来啦,<object>不能大写啦,……
           没什么大碍,但是很烦人,简直就是微软版的唐僧,我给大家提供的代码是修改过的,VS不会有哪些废话了。
     然后再body中加入onload事件的处理函数
                   <body onload="show_word();">
     再在<head></head>中间加入函数体
     <script language="javascript" type="text/javascript">
        <!--
        function show_word() {
                var str=window.location.search;
                var pos_start=str.indexOf("id")+3;
                if (pos_start == 2)
                return ;
       
                var id = "http://localhost/Getdc.aspx?id=" + str.substring(pos_start);
                document.all. MyOffice.Open( id,false, "Word.Document");
        }
        // -->
        </script>
四、编制Getdc.aspx.cs文件
      建立Getdc.aspx文件,VS会同时建立与之关联的Getdc.aspx.cs文件
      先加入命名空间
        using System.Data.SqlClient;
        using System.Data.SqlTypes;
      编辑Getdc.aspx.cs的Page_Load函数;
      protected void Page_Load(object sender, EventArgs e)
      {
        int pid = Convert.ToInt32(Request["id"]);
        SqlConnection myConnection = new SqlConnection("Data Source=\"localhost\";Initial Catalog=\"demo\";Persist Security Info=True;User ID=demo;Password=demo");//数据库的相关设置自己改吧,我就不废话了
        SqlCommand mycommand = myConnection.CreateCommand();
        myConnection.Open();
        mycommand.CommandText = "SELECT filedata " +
            " FROM Table_word WHERE (ID = " + pid.ToString() + ") ";//其中filedata的数据库类型是varbinary(MAX)
        SqlDataReader myReader = mycommand.ExecuteReader();
        myReader.Read();
        SqlBinary binaryStream = myReader.GetSqlBinary(0);
        myReader.Close();
        myConnection.Close();