第一次添加的时候是可以的,后来便显示缺少ADODB.dll同时发现AxOWC引用旁边出现了黄色的感叹号。
解决问题的主要参照方法为http://support.microsoft.com//kb/823982,要修改和重新生成AxOWC的类包装。
aximp.exe的位置位于D:/Microsoft Visual Studio .NET 2003/SDK/v1.1/Bin下。VS 2003的命令提示位于开始菜单
->所有程序->VS.net2003->VS.net下。
在AxOWC10.cs的编译的过程中出现了各种错误,要在文本管理器中逐步解决,问题都不大,比较容易解决。
在编译时只找到了MSComctlLib.dll没有找到要求的MSComctl.dll,在各种找没有找到的情况下,直接将名字改掉编译,居然通过了 。。。
在VS2003中添加AxOWC后还要将需要的一系列dll文件拷贝到OBJ文件夹下。
附录:
修改和重新生成类包装的步骤
- 启动 Visual Studio .NET 命令提示符。
- 在命令提示符下,执行以下操作:
- 创建一个名为 owc11 的新目录,然后更改到该目录:
md c:/owc11
cd c:/owc11 - 生成 Microsoft Windows 窗体包装的源代码(C# 语言):
aximp "c:/program files/common files/microsoft shared/web components/11/owc11.dll" /source
- 删除生成的程序集 AxOWC11.dll:
del c:/owc11/axowc11.dll
- 创建一个名为 owc11 的新目录,然后更改到该目录:
- 在文本编辑器(例如“记事本”)中,打开“C:/OWC11/AxOWC11.cs”。
- 将 [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 { ... }
- 将事件类标记为 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 { ... }
- 将您的更改保存到 AxOWC11.cs。
- 在 Visual Studio .NET 命令提示符下,执行以下操作:
- 将 C:/Program Files/Microsoft.NET/Primary Interop Assemblies 添加到您的 LIB 环境变量中:
set lib=c:/program files/microsoft.net/primary interop assemblies;%path%
- 从安装 Microsoft Office 2003 主互操作程序集的 GAC 中复制 Microsoft.Office.Interop.OWC11.dll 和 MSComCtl.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 - 编译源文件 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
- 将 C:/Program Files/Microsoft.NET/Primary Interop Assemblies 添加到您的 LIB 环境变量中:
- 启动 Visual Studio .NET。
- 将新编译的“AxOWC11.dll”添加到“工具箱”中:
- 在“工具”菜单上,单击“自定义工具箱”(在 Visual Studio .NET 2002 中)或单击“添加/删除工具箱项”(在 Visual Studio .NET 2003 中),然后单击“.NET Framework 组件”选项卡。
- 在“.NET Framework 组件”选项卡上,单击“浏览”。
- 在“文件名”文本框中,键入 c:/owc11/axowc11.dll。单击“打开”。
- 单击“确定”以关闭“自定义工具箱”对话框。