C# 无法强制转换类型为';microsoft.Office.Interop.Excel.ApplicationClass';至';microsoft.Office.Interop.Excel.Application'&引用;
这是我第一次尝试从一个C#控制台应用程序中从excel中捕获一些数据 我收到错误“无法将“microsoft.Office.Interop.Excel.ApplicationClass”类型的COM对象强制转换为“microsoft.Office.Interop.Excel.Application” 这段代码使用了“Microsoft Excel 12.0对象库”,我引用了Microsoft.Office.Interop.Excel 尽管如此,我还是无法克服这个错误——我相信它有自己的快速解决方案 我在这个网站上翻了一番,发现了这个解决方案: 然而,我无法理解,因此无法实施所建议的解决方案 我的.Net版本是4.5 非常感谢您的帮助 提前谢谢C# 无法强制转换类型为';microsoft.Office.Interop.Excel.ApplicationClass';至';microsoft.Office.Interop.Excel.Application'&引用;,c#,excel,com-interop,C#,Excel,Com Interop,这是我第一次尝试从一个C#控制台应用程序中从excel中捕获一些数据 我收到错误“无法将“microsoft.Office.Interop.Excel.ApplicationClass”类型的COM对象强制转换为“microsoft.Office.Interop.Excel.Application” 这段代码使用了“Microsoft Excel 12.0对象库”,我引用了Microsoft.Office.Interop.Excel 尽管如此,我还是无法克服这个错误——我相信它有自己的快速解决方
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using Excel = Microsoft.Office.Interop.Excel;
namespace deneme
{
class Program
{
static void Main(string[] args)
{
Excel.Application xlApp = new Excel.Application();
xlApp.Visible = true; // <-- excel application
xlApp.DisplayAlerts = false;
// Open the workbook.
Excel.Workbook wBook = xlApp.Workbooks.Open("C:\\FNN\\XLA\\fnnComTemplate.xlsx",
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
// get the sheet
Excel.Worksheet wSheet = wBook.Sheets[0];
// foreach (Excel.Worksheet sheet in wBook.Sheets) { if (sheet.Name == "templateSheet") { wSheet = sheet; } }
Excel.Range rng = wSheet.get_Range("A1");
aux = wSheet.Range["F6"].Value;
Console.WriteLine("interop result:" + aux);
Console.ReadLine();
}
}
}
使用系统;
使用System.Collections.Generic;
使用系统组件模型;
使用系统数据;
使用系统图;
使用System.Linq;
使用系统文本;
使用Excel=Microsoft.Office.Interop.Excel;
名称空间deneme
{
班级计划
{
静态void Main(字符串[]参数)
{
Excel.Application xlApp=新的Excel.Application();
xlApp.Visible=true;//如果这不是代码相关错误,请从注册表中删除以下给定项
步骤:
开始-->运行-->regedit-->HKEY_CLASSES_ROOT-->类型库-->{00020813-0000-0000-C000-0000000000 46}-->1.8/1.7(删除此项)
解决方案:
此问题可以通过删除更高版本Office遗留的无效注册表项来解决。请按照上述步骤操作
原因:
如果您已将Microsoft Office版本从Office 2010降级到Office 2007,或从Office 2013降级到Office 2010或2007,则此问题是由遗留的注册表项引起的
如果此解决方案对您没有帮助,请告诉我。一台计算机已更新为Office 2016 64位,从32位应用程序调用COM接口时引发异常。它没有像Jayesh回答中那样的旧TypeLib条目
将ProcessMonitor跟踪与Office 2016的工作机器进行比较,会导致在中出现类似死端注册表项的情况
HKEY_CLASSES_ROOT\Wow6432Node\TypeLib\{00024
工作机器将检查不存在的注册表项并返回
找不到名称
出现故障的机器拥有注册表项,但随后不久将抛出异常
在反复删除注册表项、重新运行跟踪、删除下一个失败的项后,COM接口功能恢复。我确信此问题(以及类似问题)的答案是正确的建议编辑注册表并删除对不再在计算机上的Office版本的旧引用是正确的
我之所以添加这个答案,是因为我现在正在自责。花了两个小时在注册表中寻找密钥,结果一无所获。最后一次尝试是在Microsoft Office上进行一次简单的修复,突然我的错误消失了
…在我看来,在深入手动编辑注册表之前尝试修复是值得的。注册表中同时包含1.7和1.8。
通过删除以下内容解决:
HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}\1.8
微软Office 365
我在Windows 10上运行Microsoft Office 365,并尝试使用上述解决方案删除注册表项,但未成功
我去了控制面板,试图修复Office 365套件。
右键单击“开始”菜单
单击应用程序和功能
搜索Microsoft 365
单击Microsoft 365
单击“修改”
我选择了快速修复
再次尝试我的程序,一切正常!使用完全相同的代码,我在一台笔记本电脑上遇到了同样的问题,而在另一台笔记本电脑上一切正常。我尝试了互联网上到处都能找到的各种解决方案,但最终成功的是明确定义了使用非32位版本的库。在visual s中这样做tudio,我必须勾选并取消勾选项目配置构建部分中的“首选32位”框,该框在.csproj文件中添加了false
。Windows7x64/
Office 365(16.0.x)32位/
VS 2019
已检查注册表->HKEY_类\u根->类型库,查找{00020813-0000-0000-C000-0000000000 46}仅存在一条记录“1.9”,无其他记录
通过过程监视器检查问题检测查找和读取vbe6ext.olb
时可能出现的问题(许多结果显示“未找到名称”)
在问题解决后,从进行“快速修复”
p.S>是由Process Monitor检查“后处理”的-现在文件VBE6EXT.OLB
是从C:\Program Files(x86)\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\VBA\VBA6\
中通过第一次探测获取的。
我在以下内容中删除regedit:
HKEY\u CLASSES\u ROOT\TypeLib\{00020813-0000-0000-C000-0000000000 46}
删除1.9
问题解决了。维修办公室不为我工作。我做了全面维修,但问题仍然存在
这对我很有用:
开始-->运行-->regedit-->HKEY_类根-->类型库-->{00020813-0000-0000-C000-0000000000 46}-->1.8/1.7(删除整个节点)
当您从Visual Studio调用Interop应用程序时,Office将自动修复
我的情况是我安装了Office 2016,但只是试用版。
我将其移除,然后切换回Office 2013
此后,出现了这个问题。
删除密钥后,Office 2013自动修复,解决了我的问题。我在PowerShell中遇到此问题。除了上述问题,$xlApp.Workbooks为我返回null。以32位模式运行PowerShell脚本解决了我的问题。无论出于何种原因,我的脚本有一天停止工作
运行动力直升机