Tag: com interop

com互操作:如何从Excel或Access中使用c#

我在网上看到很多关于VSTO和从c#自动执行excel的知识,但是很less有人开始将ac#程序集连接起来,使它可以从Excel中看到。 有人可以指向我一些非常基本的信息解释如何创build一个COM接口,GUIDS,ComVisible等?

c#中的Excel自动化通过com互操作性为2003-2010版本

有不同的办公室版本,不同的comtypes库来pipe理它们。 任何人都可以告诉我,我应该如何编写代码来操作不同的Excel版本? PIA的办公室怎么样,我应该包括他们所有的项目? 如何解决办公室多版本问题?

不能embeddedinteroptypes的“Microsoft.Office.Core …”

这个问题已经被堆栈溢出了多次,但所有的解决scheme都没有帮助我更进一步。 (改变“embedded互操作types”为false) 我不知道我做错了什么,但是突然之间我发现了200多个错误 在这里查看整个错误列表 我试着运行错误,得到不同的消息 ,它告诉我的.exe丢失,所以我试图重build它,但是这使我回到了开始。 这也给我“随机”铸造错误 ,在错误风暴之前,它的工作顺利..

对.NET DLL的Excel引用会破坏新版本

我有一个安装到GAC的.NET DLL,因为它被几个应用程序使用。 其中之一是一个Excel工作簿,它使用.NET的COM互操作工具引用该DLL。 COM tlb文件安装到应用程序目录。 这一切都工作正常,除了安装DLL的更新版本。 在某些PC上,工作簿中的COM参考会中断(显示为“Missing”)。 运行相关的macros使Excel崩溃。 这可以通过在VBA编辑器中取消选中缺less的引用并重新添加对DLL的引用来解决,但我宁愿我的用户在每次打开它时都不必这样做。 所有相关的对象和方法都没有改变的签名,并用不变的GUID进行装饰。 任何想法为什么参考打破? 编辑:深入一些在调查深入调查后,它看起来像COM注册没有正确安装。 但是,这并没有显示为安装失败。 尽pipe如此,仍然没有find根本的原因。

首次从ASP.NET webservice打印时,Excel挂起

我们正在使用Excel将SpreatSheetML转换为ASP.NET webservice中的XLS。 而且,如果用户检查了正确的checkbox,我们产生了一个使用Excel打印电子表格的线程。 最近,我们已经在一个新的环境中部署了应用程序,然后我们开始遇到问题:第一次有人试图打印时,Excel似乎挂在服务器上 – 即对工作簿上的PrintOut方法的调用永远不会返回。 但是,如果我们以应用程序池身份login到服务器并打开Excel,请将某些内容发送到打印机,然后再closures它,打印将从此继续进行! 我怀疑Excel正在显示一个invisible dialog – 症状和我们之前的一样,当Excel打开时出现“不能使用对象链接和embedded”对话框时,Excel似乎停滞不前。 我知道,使用服务器端的Office自动化是不好的,但这是一个很难改变的遗留应用程序,所以请不要只是build议我重新devise我们的解决scheme。 有没有人有这种行为的经验?

在C#中使用excel interop导入txt文件(QueryTables.Add)

我想使用Querytables.Add插入文本文件到Excel单元格; 没有错误,但工作表是空的。 除了使用Value2属性的单个单元格操作。 我已经使用macros来logging使用的对象。 你能帮我这个(我使用VS2008,C#,Excel 2003和2007;都显示空单元格)。 以下是我的代码; 谢谢你的帮助 Application application = new ApplicationClass(); try { object misValue = Missing.Value; wbDoc = application.Workbooks.Open(flnmDoc, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue); wsRefDocBudgetOwner = (Worksheet)wbDoc.Worksheets[2]; Range lRange = wsRefDocBudgetOwner.get_Range("B2", "B25"); var temp2 = wsRefDocBudgetOwner.QueryTables; var temp = temp2.Add(@"TEXT;d:\temp\config ssas.txt", lRange, Type.Missing); […]

Microsoft.Office.Interop.Excel.ChartObject.Copy上未指定的错误(从HRESULTexception:0x80004005(E_FAIL))

我正在使用Microsoft.Office.Interop.Excel,使用Asp.net将Excel图表复制到电源点。 它可以在视觉stdio IDE中正常工作,但是我将其部署在服务器上。 它给出了一个错误,未指定错误(从HRESULTexception:0x80004005(E_FAIL)) 这个错误是由代码当它复制charobject时产生的,只有数据副本完全正确。 问题是使用chartobject.copy()函数。 我search了很多,但它没有给你任何帮助。 穆阿扎姆

Range.Value2&Range.Formula在C#中有不同的值,而不是VBA?

我想创build一个像GetPath(parameter)的UDF ,其中参数可以是像"B1"这样的单元格引用,也可以是GetPath根据input做的string,它将调用Web服务来获取input的path,例如公式单元格A1=GetPath(B1) ,单元格B1有一些string,函数应该返回path并放在单元格A1中,即A1的"Value2"应该是B1的path。 现在在C#中,当我做了FormulaCell.Value2 = path ,它的公式也改变了,但是我想“Formula”和“Value2”是不同的。 我知道这是可能的VBA,但我使用C#。 任何人都知道如何做到这一点? 谢谢 我GOOGLE,谷歌search,仍然没有find解决办法。 这听起来像一个基本的function,但在C#中是不可能的。 至less这是我通过研究得到的。 我相信你们中有些人以前遇到同样的问题,只是想知道你是如何解决的? 我将在VB.NET中尝试这个,如果这样的话我会用C#来引用它。 如果有人知道在VB.NET,请也张贴。 谢谢

卸载COM对象C#

可能重复: 如何正确清理C#中的Excel互操作对象 我正在使用EXCEL INTEROP来读取我的.NET应用程序中的excel文件。 但是,我看到,完成后,我仍然可以在Windows任务pipe理器中看到EXCEL.EXE。 代码如下: ApplicationClass excel = new ApplicationClass(); Workbooks workBooks = excel.Workbooks; Workbook workBook = workBooks.Open(fileName,0,true,5,"","",true,XLPlatform.xlWindows,"\t",false,false,0,true,1,0); foreach (Name name in workBook.Names) { try { // =#REF!#REF! indicates that the named range refers to nothing. Ignore these.. if (name.Value != "=#REF!#REF!") { if (!retNamedRanges.ContainsKey(name.Name)) { string keyName = name.Name; object value = name.RefersToRange.get_Value(missing); […]

使用.NET从另一个进程访问实时Excel数据/属性的最快方法

实时(未保存的)Excel数据和C#对象之间的接口的最快捷的方法就是如何有效地访问Excel数据。 根据这个答案,两个build议是使用Excel-Dna或Add-in Express。 我相信Excel-Dna和Add-in Express都需要以Excel加载项运行。 在我的情况下,业务逻辑运行在另一个进程中,并创build一个Excel实例( New Excel.Application() )。 Excel中的更改需要更新内部对象。 从Excel中获取单元格值可以通过DirectCast(Range.Value, Object(,))高效地完成。 不幸的是,这是不可能的其他属性,如Range.Text或Range.NumberFormat 。 正如所料,遍历单元格非常缓慢。 您认为从主进程访问Excel数据的最有效方法是什么? 我想到的一个想法是添加一个加载到Excel(使用说Excel-Dna)聚合数据,然后将其张贴到主应用程序。 由于我没有太多的跨AppDomain编组经验,如果这是一个可行的方法或另一个应该是首选,我将不胜感激评估。