(转)在 Visual Studio .NET 中处理 Office 2003 Web 组件的事件

适用于

概要

本分步指南介绍了如何修改 Microsoft Office 2003 Web 组件的类包装。随后,它介绍了如何重新生成类包装,以便您可以使用 Microsoft Visual Studio .NET 在您创建的应用程序中管理它们的事件。

默认情况下,Microsoft Visual Studio .NET 生成的类包装不允许您处理以下 Office 2003 Web 组件的事件:
  • 图表
  • 电子表格
  • 数据透视表
若要处理这些组件的事件,您可以修改类包装的源代码,然后重新编译代码。

返回页首

背景

Microsoft Visual Studio .NET 生成一个 事件侦听程序类,该类实现一个 事件接口。该 事件侦听程序类将被传递到 Office Web 组件 (OWC)。随后,OWC 调用 IDispatch 接口的 QueryInterface 方法,而不是调用 事件接口。但是,生成的类的 IDispatch 接口不包含事件的调度标识符 (DISPID)。

若要解决此问题,您可以使用 ClassInterfaceType.None 值标记生成的类以强制 COM Interop 为接口(而不是类)返回 IDispatchIDispatch 接口包含事件 DISPID。

返回页首

修改和重新生成类包装的步骤

  1. 启动 Visual Studio .NET 命令提示符。
  2. 在命令提示符下,执行以下操作:
    1. 创建一个名为 owc11 的新目录,然后更改到该目录:

      md c:\owc11

      cd c:\owc11

    2. 生成 Microsoft Windows 窗体包装的源代码(C# 语言):

      aximp "c:\program files\common files\microsoft shared\web components\11\owc11.dll" /source

    3. 删除生成的程序集 AxOWC11.dll

      del c:\owc11\axowc11.dll

  3. 在文本编辑器(例如“记事本”)中,打开“C:\OWC11\AxOWC11.cs”。
  4. [ToolboxItem(true)] 添加到图表组件、电子表格组件和数据透视表组件的生成的类中,如下面的示例所示:

    图表组件
     [System.ComponentModel.ToolboxItem(true)]  public class AxChartSpace : System.Windows.Forms.AxHost {   	...  } 
    电子表格组件
     [System.ComponentModel.ToolboxItem(true)]  public class AxSpreadsheet : System.Windows.Forms.AxHost { 	 ...  } 
    数据透视表组件
     [System.ComponentModel.ToolboxItem(true)]  public class AxPivotTable : System.Windows.Forms.AxHost { 	 ...  } 
  5. 将事件类标记为 ClassInterfaceType.None,如下面的示例所示:

    图表组件
     [System.Runtime.InteropServices.ClassInterface(   System.Runtime.InteropServices.ClassInterfaceType.None)]  public class AxChartSpaceEventMulticaster : OWC11.IChartEvents { 	 ...  } 
    电子表格组件
     [System.Runtime.InteropServices.ClassInterface(   System.Runtime.InteropServices.ClassInterfaceType.None)] public class AxSpreadsheetEventMulticaster : OWC11.ISpreadsheetEventSink { 	 ... } 
    数据透视表组件
     [System.Runtime.InteropServices.ClassInterface(   System.Runtime.InteropServices.ClassInterfaceType.None)]  public class AxPivotTableEventMulticaster : OWC11.IPivotControlEvents { 	 ...  } 
  6. 将您的更改保存到 AxOWC11.cs。
  7. 在 Visual Studio .NET 命令提示符下,执行以下操作:
    1. C:\Program Files\Microsoft.NET\Primary Interop Assemblies 添加到您的 LIB 环境变量中:

      set lib=c:\program files\microsoft.net\primary interop assemblies;%path%

    2. 从安装 Microsoft Office 2003 主互操作程序集的 GAC 中复制 Microsoft.Office.Interop.OWC11.dllMSComCtl.dll

      copy %windir%\assembly\GAC\Microsoft.Office.Interop.Owc11\11.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Owc11.dll

      copy %windir%\assembly\GAC\mscomctl\10.0.4504.0__31bf3856ad364e35\mscomctl.dll

    3. 编译源文件 AxOWC11.cs

      csc /t:library /r:microsoft.office.interop.owc11.dll /r:adodb.dll /r:msdatasrc.dll /r:mscomctl.dll axowc11.cs

      注意 您会收到以下 CS0108 错误信息:
      The keyword new is required
      您可以忽略此错误。
  8. 启动 Visual Studio .NET。
  9. 将新编译的“AxOWC11.dll”添加到“工具箱”中:
    1. 在“工具”菜单上,单击“自定义工具箱”(在 Visual Studio .NET 2002 中)或单击“添加/删除工具箱项”(在 Visual Studio .NET 2003 中),然后单击“.NET Framework 组件”选项卡。
    2. 在“.NET Framework 组件”选项卡上,单击“浏览”。
    3. 在“文件名”文本框中,键入 c:\owc11\axowc11.dll。单击“打开”。
    4. 单击“确定”以关闭“自定义工具箱”对话框。
当创建新的 Microsoft Visual Basic .NET 项目或新的 Microsoft Visual C# .NET 项目时,您会注意到“工具箱”中“常规”选项卡上的控件列表中包含“AxChartSpace”控件、“AxPivotTable”控件和“AxSpreadsheet”控件。现在便可以将这些组件添加到窗体中了。

返回页首

参考

有关使用 Visual Studio .NET 管理 Office XP Web 组件事件的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

328275 HOW TO:Handle Events for the Office Web Components in Visual Studio .NET

返回页首


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=60708

转载于:https://www.cnblogs.com/sw22225458/archive/2007/05/22/755667.html

已标记关键词 清除标记
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
作为ASP.NET项目的开发者,在应对用户的Word、Excel文档时,您是否迫切希望Visual Studio工具箱里能有现成的Word、Excel标准ASP.NET控件可用就太好了?现在梦想已经成真,想在网页上显示编辑Word、Excel文档并且调用微软Office的强大功能,就直接从工具箱拖动一个PageOffice控件到Web页面上就可以了,就和使用常用的TextBox控件一样简单方便。 PageOffice是什么? PageOffice for ASP.NET是一款非常优秀的专业的集成微软OFFICE功能的ASP.NET控件平台,能够帮助Web开发人员轻松实现在网页嵌入运行微软Office的特殊功能。PageOffice把微软复杂的Office编程接口(COM API) 有效地整合于 ASP.NET 环境,通过简化的.NET类库接口为开发者提供了在Web项目里获得Office众多强大功能的机会,并且能够同时利用来自 .NET Framework 的开发效率和软件功能。 集成PageOffice不但能够实现在线编辑、保存真正的Office文档,而且还可以轻松实现Word、Excel文档的动态数据填充、格式控制和用户输入提交的高级复杂功能。只要集成PageOffice,您将能够轻松应对在Web项目开发遇见的绝大部分和Office文档有关的功能和难题。您只需把精力集在项目业务逻辑上,Office技术问题就交给PageOffice实现解决吧。 PageOffice除了提供Word/Excel动态数据填充,格式控制,Word/Excel用户输入提交,Word/Excel/PowerPoint/WPS等Office文档的在线打开、只读浏览、编辑、保存等功能外,还给在线协同办公提供了强大的支持功能:可编辑区域控制,强制痕迹保留,并发编辑控制,手写批注,手写签名,圈阅签字,电子印章、动态模板套红等。 专业的MSDN风格的开发帮助,上百的示例代码,确保您的开发效率事半功倍。 运行环境 服务器端:Windows2003、Windows2008、Windows2012及Windows XP、Windows7、Windows8等(包括64位版本);.Netframework2.0及以上版本。 客户端:Windows XP、Windows Vista、Windows7、Windows8及以上版本(包括64位版本);Microsoft Office2003、2007、2010、2013;IE 6.0、7.0、8.0、9.0、10.0。 名称:PageOffice for ASP.NET专业版 2.0 下载:http://www.zhuozhengsoft.com/down/PageOffice_ASP.NET.rar 大小:13.8MB 版本:专业版 2.0
<p> <strong><span style="background-color:#FFFFFF;color:#E53333;font-size:24px;">本页面购买不发书!!!仅为视频课购买!!!</span></strong> </p> <p> <strong><span style="color:#E53333;font-size:18px;">请务必到</span></strong><a href="https://edu.csdn.net/bundled/detail/49?utm_source=banner"><strong><span style="color:#E53333;font-size:18px;">https://edu.csdn.net/bundled/detail/49</span></strong></a><strong><span style="color:#E53333;font-size:18px;">下单购买课+书。</span></strong> </p> <p> <span style="font-size:14px;">本页面,仅为观看视频页面,如需一并购买图书,请</span><span style="font-size:14px;">务必到</span><a href="https://edu.csdn.net/bundled/detail/49?utm_source=banner"><span style="font-size:14px;">https://edu.csdn.net/bundled/detail/49</span></a><span style="font-size:14px;">下单购买课程+图书!!!</span> </p> <p> <br /> </p> <p> <span style="font-size:14px;">疯狂Python精讲课程覆盖《疯狂Python讲义》全书的主体内容。</span> </p> <span style="font-size:14px;">内容包括Python基本数据类型、Python列表、元组和字典、流程控制、函数式编程、面向对象编程、文件读写、异常控制、数据库编程、并发编程与网络编程、数据可视化分析、Python爬虫等。</span><br /> <span style="font-size:14px;"> 全套课程从Python基础开始介绍,逐步步入当前就业热点。将会带着大家从Python基础语法开始学习,为每个知识点都提供对应的代码实操、代码练习,逐步过渡到文件IO、数据库编程、并发编程、网络编程、数据分 析和网络爬虫等内容,本课程会从小案例起,至爬虫、数据分析案例终、以Python知识体系作为内在逻辑,以Python案例作为学习方式,最终达到“知行合一”。</span><br />
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页