我开发了一个将数据导入Microsoft Excel的应用程序。使用VS2005 + .NET 2.0和Microsoft Office 2007.NET Office interop使用版本独立的办公室
AM是安装在我的机器(办公室12)上。
的编译的应用程序工作正常,如果我在我的机器上运行它,但当我将应用程序部署到其他机器说,那些使用较低版本(Office 2000的),我得到的错误:
无法加载文件或大会的Microsoft.Office.Interop.Excel,版本12.0.0.0
我怎么会那么让我的应用程序正确执行,无论安装在计算机上的Office(Excel)中的?
谢谢。
一些更新: 我把引用的两个DLL,即Microsoft.Office.Interop.Excel.dll(版本12.0.0.0)和Office.dll(版本12.0.0.0)在我的bin文件夹。我已经将此引用的属性设置为Copy Local = True,并且当我编译我的应用程序时,这些DLL被复制到debug/release文件夹中。
现在,当我尝试运行应用程序时,我已经下了错误的: “无法加载文件或程序的Microsoft.Office.Interop.Excel,版本12.0.0.0”
但另一个错误来到这是: System.AccessViolationException:试图读取或写入受保护的内存。这通常表明其他内存已损坏。 (对象文件名,对象文件格式,对象密码,对象WriteResPassword,对象ReadOnlyRecommended,对象CreateBackup,XlSaveAsAccessMode AccessMode,对象ConflictResolution,对象AddToMru,对象TextCodepage,对象TextVisualLayout,对象本地)
所以,实际上,我怎么创造条件,能够在数据表中的数据导出安装到Excel不管Office版本的应用程序?
谢谢。
我试过用你的Office Wrapper,它在Office 2007中工作正常。我在Office 2000中没有测试过。 我遇到的一个问题是应用程序创建过程似乎驻留在内存中。即使我调用了MSExcel.Application.CreateApplication.Quit(),仍然会收到一条消息,提示您“您是否想要将更改保存到Book1?”当我关闭/注销我的机器时。 任何进一步的建议高度赞赏。谢谢。 – Batuta 2009-08-14 01:03:17
设置属性“Application.Interactive = false”。那么应该禁止所有的用户输入。 有关物业的更多信息:http://msdn.microsoft.com/en-us/library/bb177670.aspx – TcKs 2009-08-14 08:54:19