加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

找不到类型库“Excel”的包装程序集解决方法

(2016-08-12 09:05:52)
标签:

找不到类型库“excel

分类: 代码天地
vs2010 C# 项目 编译生成时,找不到类型库“Excel”的包装程序集的解决方法

曾用C#编写对 Excel 操作程序, 现在由 WinXP 升级到 Win7 ,编译就出现: 
 warning MSB3283: 找不到类型库“Excel”的包装程序集。
虽然是个警告错误,但无法生成执行程序,因此需要做如下的若干工作才能使用,当然也参考了网上资料。

一 删除自己工程中对 Excel 的引用
   在vs2010环境下,点击工程的“引用”文件夹,选择带黄色感叹号的 Excel , 鼠标右击删除它。
二 生成自己机器环境对应的动态库  Excel.dll
   这里是 Win7 64位,  Excel 2003,相关路径如下(尽管自己用Office 2010,但使用最多的还是Office 2003,因此以它为例):

1 设置命令路径
  开始 -- 所有程序 -- Microsoft Visual Studio 2010 -- Visual Studio Tools -- Visual Studio 命令提示(2010)
  就转到以下路径 ,  C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC  同时将本路径设置到命令路径中。
2 切换到 Excel.EXE所在的路径

  输入: CD C:\Program Files (x86)\Microsoft Office\OFFICE11  按回车切换到 Excel.EXE所在的路径

3 生成 Excel.dll
  执行命令 tlbimp excel.exe
  结果产生 Excel.dll

三 添加引用

1  将上面生成的Excel.dll 复制到自己的工程下,这样使用简单些,而且到不同的机器上,不用来回切换路径。
2  在vs2010开发环境下, 右击“引用”文件夹-- 添加引用,在浏览选项页,找到本工程下的 Excel.dll 引用它


四  改变 其它错误

1 注释掉冲突语句
  因为先前的版本添加Excel引用时,加入了如下3条语句:
  using System.Reflection;
  using System.Runtime.InteropServices;
  //using Excel = Microsoft.Office.Interop.Excel;

  因为Excel中已经有了Excel,所以注释掉最后一条语句  using Excel = Microsoft.Office.Interop.Excel;即可

2 无法嵌入互操作类型
 这样编译时, 可能会出现若干如下的错误:

 xxx.cs(981,27): 错误 CS1752: 无法嵌入互操作类型“Excel.WorkbookClass”。请改用适用的接口。

这时候,再次点击“引用”文件夹下的引用 Excel ,在它的属性中窗口中, 将“嵌入互操作类型”改为 false ,就可以了。

五 再次编译工程就正常生成了。


六 WinXP , Win7 系统下的 目标平台 问题

当改回到WinXP时,编译可以但不能运行, 提示如下:

尝试运行项目时出错:无法开始调试。要调试的程序集是与当前系统不兼容的平台生成的。

原来是在Win7 下, 为了充分发挥它的特性,将生成目标设置为64 位所致。

解决方法:
 
在解决方案,菜单 项目--属性,在“生成”选项页,将“目标平台”改为x86就可以了。

这样在Win7 也可以按32位的方式使用。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有