Microsoft.Office.Core 引用以及 Microsoft.Office.Core.MsoTriState 的问题
遇到这个错误终于在这里找到了答案
这样,你的引用中就会出现以下内容(当然有可能以前就有了,不用更改office2003的安装)
(1).net中有Microsoft.Office.Interop.PowerPoint, Office
(2)com中有Microsoft.Office 11.0(或12.0) Object library
Microsoft.Office.Interop.PowerPoint肯定是要添加的.
但Office和Microsoft.Office 11.0(或12.0) Object library添加谁?
只添加Office足以!
实践证明,
(1)如果只添加Microsoft.Office 11.0(或12.0) Object library,会出现下面的错误:
错误 1 类型“Microsoft.Office.Core.MsoTriState”在未被引用的程序集中定义。必须添加对程序集“office, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”的引用
(2)如果Office和Microsoft.Office 11.0(或12.0) Object library都添加,就会出现下面的错误:
错误 1 类型“Microsoft.Office.Core.MsoTriState”同时存在于“E:/Program Files/Microsoft Visual Studio 9.0/Visual Studio Tools for Office/PIA/Office12/Office.dll”和“C:/Documents and Settings/Administrator/我的文档/Visual Studio 2008/Projects/PPTPaser/ConsoleApplication1/obj/Debug/Interop.Microsoft.Office.Core.dll”中
原因是MsoTriState在两个dll中都出现了.
正确做法:只添加Office引用即可
这个问题耗了我很多时间解决,因此特地写此文,希望遇到相同问题的程序员能尽快解决之.
-----------------------------------------------------------------------------------------------------------------------------------------
ms.office.interop.excel.dll是有版本号的, 每个版本号对应OFFICE的一个版本
说的更直接一点,每个版本的dll都是通过调用相应版本EXCEL内核中的接口,来完成C#中读写EXCEL的,(1) 1985年:Excel 1.0 (2) 1993年:Excel 5.0——Office 4.2 (3) 1995年:Excel 7.0(Excel 95) (4) 1997年:Excel 8.0(Excel 97) (5) 1999年:Excel 9.0(Excel 2000) (6) 2001年:Excel 10(Excel XP/2002)——Office XP/2002 (7) 2003年:Excel 2003(Excel XP/2003)—— 11.0 (8) 2007年:Excel 2007(Excel XP/2007) —— 12.0(9) 2010年:Excel 2010 —— 13.0 (10) 2012年:Excel 2013 ——14.0
-----------------------------------------------------------------------------------------------------------------------------
Microsoft.Vbe.Interop.dll和office.dll是啥
期间,想要集成Microsoft.Office.Interop.Excel.dll到exe中,但是另外却看到了两个dll:
Microsoft.Vbe.Interop.dll
office.dll
想要搞懂是啥,以及是否此处也要一并集成进来。
【解决过程】
1.参考:
Office 主要互操作程序集
http://msdn.microsoft.com/zh-cn/library/15s06t57%28v=vs.80%29.aspx
看到相关的解释了:
Microsoft Visual Basic for Applications Extensibility 5.3 |
Microsoft.Vbe.Interop.dll |
Microsoft Forms 2.0 对象库 (可在应用程序中使用的可编程控件) |
Microsoft.Vbe.Interop.Forms.dll |
Microsoft Office 11.0 对象库 (Office 共享的功能) |
office.dll |
Microsoft Visual Basic for Applications Extensibility 5.3 的绑定重定向程序集 |
Policy.11.0.Microsoft.Vbe.Interop.dll |
Microsoft Office 对象库的绑定重定向程序集 |
Policy.11.0.office.dll |
【总结】
所以,看来,最好也是要在集成:
Microsoft.Office.Interop.Excel.dll
时,连带的一起把:
Microsoft.Vbe.Interop.dll
office.dll
都集成进来。
这样,才可以避免
别人在使用exe时,内部用到excel的dll时,完整的所需要的函数,都可以自带的找到了。
不会再对于Microsoft.Vbe.Interop.dll或office.dll报错说找不到。
--------------------------------------------------------------------------------------------------------------------------
先说说题外话,前段时间近一个月,我一直在做单据导入功能,其中就涉及到Excel操作,接触Excel后发现他的api说明并不多,好在网上有很多朋友贴出了一些代码,我在不断的挫折中吸取了很多教训,现共享出来,给大家参考。
1. 最好在客户端使用,不要在B/S服务端使用,因为会受到IIS权限和占用内存影响,多人并发操作必然完蛋
2. 需要引入两个DLL,Microsoft.Office.Interop.Excel.dll和office.dll,在加上项目的时候,会报错“类型“Microsoft.Office.Interop.Excel.ApplicationClass” 未定义构造函数无法嵌入互操作类型“Microsoft.Office.Interop.Excel.ApplicationClass”。请改用适用的接口。”,这时只需要将将引用的DLL:Microsoft.Office.Interop.Excel;的嵌入互操作类型改为false,就可以了
3. 注意Excel中sheetindex, rowindex,columnindex都是从1开始的
4. 理清Excel里面的对象(Application、Workbook、Worksheet、Range),其中Range包含行和列还有单元格,很多方法都是弱类型object,需要拆箱和装箱操作,循环读取效率并不高,所以我在读取大批量数据Excel时,采用的方式是将Excel调用另存为csv文件,再通过文本操作字符串的方式解析csv文件,读取每一行,实践证明,这样的效率比较高。解析csv文件在附件可以供大家下载
5. 客户端必须正确安装office2003或office2007,如果是安装的wps系列的,需卸载后再重新安装office
这里我贴出我封装Excel的操作类,希望能对大家有所帮助,欢迎大家指正:
Microsoft.Office.Core 引用以及 Microsoft.Office.Core.MsoTriState 的问题相关推荐
- 跟本菜菜一起去体验Microsoft Windows Server Code Name Longhorn Server Core
消失的菜菜又回来了,这段时间由于很多原因没及时更新blog,忘大家见谅-还记得菜菜以前给大家介绍的Microsoft Windows Server Longhorn吗?今天我给大家带来Microsof ...
- .NET Core 首例 Office 开源跨平台组件(NPOI Core)
前言 最近项目中,需要使用到 Excel 导出,找了一圈发现没有适用于 .NET Core的,不依赖Office和操作系统限制的 Office 组件,于是萌生了把 NPOI 适配并移植到 .NET C ...
- core部署iis的 调试net_远程调试远程 IIS 计算机上的 ASP.NET Core - Visual Studio | Microsoft Docs...
在 Visual Studio 中远程调试远程 IIS 计算机上的 ASP.NET CoreRemote Debug ASP.NET Core on a Remote IIS Computer in ...
- Microsoft KMS Client Setup Keys ( Windows + Office )
对于零售版的Windows操作系统,通常可以通过刷BIOS添加SLIC数据然后通过OEM证书激活,或者通过BootLoader方式(不适用于UEFI引导)伪激活,但无论哪一种方式对于普通用户而言都不够 ...
- wpsmac和pc版的区别_WPS Office for Mac VS Microsoft Office 365,同为办公软件,差别竟然这么大!...
原标题:WPS Office for Mac VS Microsoft Office 365,同为办公软件,差别竟然这么大! 说起日常办公三件套:Word.PPT.Excel,目前做的常用的办公软件有 ...
- Microsoft Office LTSC 2021 for Mac(office系列全套装)v16.54
哪里有全套装的office 2021 mac版下载?office2021是一款由微软官方提供的最新office办公软件.office 2021 for Mac 从头开始设计,以利用最新的 Mac 功能 ...
- Microsoft Office 2003 SP3和Microsoft Office Professional Plus 2010 SP1 VOL完美共存安装教程
Microsoft Office 2003 SP3和Microsoft Office Professional Plus 2010 SP1 VOL 完美共存安装教程 操作系统:Windows 7 Ul ...
- C# office dll引用及生成
C# OFFICE EXCEL WORD 在使用vs2005. vs2008. vs2010 制作包含 word等office的应用程序时,有时找不到对Microsoft.Office.Core.Mi ...
- .net core引用错误的Entity Framework而导致不能正常迁移数据的解决办法
本人刚学.net core,因此在学习过程中会遇上许许多多的坑.每一位初学者最大的问题在于资料的查看不仔细或是没有正确理解里面的内容,导致在后面自己在不知道错误的情况下做了一个小动作.对于完全没有理解 ...
最新文章
- R语言ggplot2可视化散点图、并使用geom_encircle函数自定义多边形圈定可视化图像中的指定区域、使用geom_smooth函数基于loess方法拟合数据点之间的趋势关系曲线
- Python函数参数的五种类型
- html网页特殊符号代码
- 3月13日 抽奖活动
- OpenCV相机位移引起的单应性的实例(附完整代码)
- 边缘检测后去除噪点_Street Lanes Finder - 检测自动驾驶汽车的车道
- javamailsender注入失败_关于SpringBoot使用Redis空指针的问题(不能成功注入的问题)...
- 学python还是labview_Labview个人感受
- 屏蔽网站广告的Chrome谷歌浏览器插件推荐和下载地址
- 卷积神经网络以LeNet网络为例的手写体识别
- 数据库实验报告一-创建数据库和表
- CAD梦想画图中“插入图片”
- [校内模拟] 201027 NOIP Practice T2 Clockwork 众人皆WA我独A(划去)
- Remove 以及dorp做实验验证MongoDB删除文档后索引是否会自动删除
- 项目经理等级划分,看看你在哪一级?
- Java课程设计——象棋(201521123042 姚佳希)
- Http 调用netty 服务,服务调用客户端,伪同步响应.ProtoBuf 解决粘包,半包问题.
- flutter 数据存储 SharedPreferences
- 用argparse实现ls -lha等linux命令格式展示
- 汽车电子行业上中下游产业分类