Tag: com

Excel 2010 COM对象引用没有发布

下面的代码示例在Excel 2007中工作得很好,但是当我安装了Excel 2010(32位)时,除非添加GC.Collect(),否则将使excel.exe进程保持打开状态。 我的简单问题是我做错了什么? 它看起来像我释放我使用的一切。 public override void Update() { StatusBox.AddStatus("Opening File " + ImportPath); Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbook wb = app.Workbooks.Open(ImportPath, 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); Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.Sheets[1]; Range rng = ws.Cells.SpecialCells(XlCellType.xlCellTypeLastCell, Type.Missing); int LastRow = rng.Row; StatusBox.AddStatus(LastRow.ToString() + " Rows Found […]

如何运行和控制从Java的Excel实例

我的Java应用程序有一个button,应该打开一个用户select的Excel文件单击时。 在这个文件上,用户必须select一个图表。 最后,他们应该点击一个触发一个进程的button(macros,Java方法?),它将图的大小改变为从Java应用程序的对象读取的值。 当在互联网上search时,我发现像JACOB这样的Java桥梁,但这似乎只运行在Windows32; 有没有什么工作交叉平台? 如果有人能够帮助我find一个好的方法,一个合适的图书馆或任何其他有用的提示,我会非常高兴,因为我现在有点困惑,不知道如何开始;) 非常感谢,祝你有美好的一天! EDDA

VSTO COM加载项ProgID

我有一个问题,加载项的ProgID是MyAddin,而我希望它是MyAddin.Connect,因为有很多现有的电子表格,其中VBA引用MyAddin.Connect 。 我已将MyAddin的每个实例更改为csproj文件, 清单和vsto文件中的MyAddin.Connect。 我已经更改了registry中的每个实例。 甚至是registry项HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Office \ Excel \ Addins \ MyAddIn 到MyAddIn.Connect 仍然当我通过VBA检查ProgID ,它说MyAddin(在COM加载项pipe理器中的友好名称是MyAddin.Connect)。 ProgID从Excel中的VBA中加载到哪里? 我应该注意到,当我通过Visual StudiodebuggingAddIn时,它工作的很好。 但是,当我通过InstallShield安装程序安装它时,它只是拒绝工作。

我的Shared Add-in构造函数有什么问题?

早上好,研究员们: 我目前正在尝试修复从以前的开发人员inheritance的Excel共享加载项的几个性能问题,基本上我试图find加载项的东西如何在Excel内部工作,这意味着我已经在网上search信息我的理解是: 在registry中,LoadBehaviour应该设置为3 打开事件期间的Excel工作簿应该先加载VBA项目中引用的所有加载项 一旦打开文档,我的加载项就可以被VBA代码使用。 现在我将Log4Net添加到加载项中,好奇的是我看到了下面的行为 在Excel工作簿中的打开事件期间,有一个全局variables Public myAddin As Object Set myAddin = New TradingAddin.TradingAddin 因此调用C#类的构造器。 几秒钟后,构造函数被调用一次,所有的IDTExtensibility2方法OnConnection,OnDisconnection等被调用。 我以为,一旦Excel加载加载项,它应该是可用的VBE代码,我可以写类似的东西 Set myAddin = Application.COMAddins.Item("Trading").Object 但是它返回Nothing并且调用Class的构造函数两次销毁在Excel工作簿生命期内应该在内存中可用的C#对象内保存的任何状态。 更新: 该平台是Visual Studio 2005 Team Edition,目标应用程序是Excel 2003,并且加载项是共享加载项。 我没有使用VSTO。 我试图在VBA中调用的实际代码是 Set addIn = Application.COMAddIns.Item("K2Trading.K2Trading").Connect Set managedObject3 = addIn.Object <— This value that I thought was an Instance of the Add-in is equal […]

最大数量的Excel进程?

如果我这样做(例如) for (int i=0;i<22;i++) { var app = new Excel.Application(); } 然后创build22个excel进程。 但是,如果我这样做 for (int i=0;i<25;i++) { var app = new Excel.Application(); } 它创build了22个excel过程,但是其中大部分消失了,只剩下一些。 是否有22或什么的限制? 这可以增加吗? 谢谢! 编辑:用下面的代码它不会发生: var apps = new List<Application>(); for (int i=0;i<25;i++) { apps.Add(new Application()); }

在修改Excel工作表时随机发生COMexception

我正在构build一个生成一些数据的应用程序,然后将其输出到一个Excel工作表。 有时候,这个表单有很多行,所以我使用BackgroundWorker来处理它(请注意,我使用了一个阻止用户修改生成的电子表格的编辑的进度条)。 不幸的是,在发生这种情况时,由于COMexception,程序会随机崩溃。 通过随机我的意思是,exception发生在执行过程中的不同时间,有时根本不会发生。 下面是导致问题的代码,在使用sheetvariables的行上总是调用exception。 Public Sub modifyCell(ByRef sheet As Worksheet, ByVal row As Integer, ByVal column As Integer, ByRef value As String) sheet.Cells(row, column) = value End Sub Public Sub colorRange(ByRef sheet As Worksheet, ByVal iRow As Integer, ByVal iCol As Integer, ByVal fRow As Integer, ByVal fCol As Integer, ByVal color As Integer, […]

加载32位COM DLL在64位办公室插件

我想实现一件事情。 我想使用Excel Add的32位COMtypes库。请注意,我的机器上安装了64位的Excel 2010。 我已经编译了32位的join。 但是,当我创build一个COM类的实例,它给出了这个错误“检索COM类工厂的组件与CLSID失败,由于以下错误类未注册”是否有可能是我想要做的? 任何build议(使用其他版本的Excel或1 64位COMtypes库除外)?

win32com调度不会find已打开的应用程序实例

我正在使用python来parsingExcel文件,并在重新开始时使用excel = Dispatch('Excel.Application')访问应用程序的COM代码将find应用程序对象就好了,我将能够访问活动工作簿。 问题来了,当我有两个Excel的实例打开,我closures了第一个。 从那时起,每次调用excel = Dispatch('Excel.Application')提供一个与Excel打开的实例不同的应用程序对象。 如果我尝试excel.Visible=1它会打开一个新的Excel实例,而不是显示已经打开的excel实例。 如何获得已经打开的Excel实例的COM对象,而不是创build新的实例?

使用Excel的Powershell脚本运行缓慢

所以我有这个脚本,我在我的笔记本电脑上编码,工作正常,工作是将两个.csv文件合并成一个.xls文件。 运行包含两千行的.csv文件的脚本最多需要几秒钟。 但是,当我尝试运行它应该位于服务器上,它需要…小时。 我还没有完全运行,但在.xls文件中写入一行可能需要2-3秒。 所以我想知道什么是造成运行时的巨大增加。 我正在监视脚本运行时的CPU负载,并且负载为50-60%。 服务器有Ram的负载,和两个CPU核心。 我如何加快速度? 该脚本如下所示: $path = "C:\test\*" $path2 = "C:\test" $date = Get-Date -Format d $csvs = Get-ChildItem $path -Include *.csv | Sort-Object LastAccessTime -Descending | Select-Object -First 2 $y = $csvs.Count Write-Host "Detected the following CSV files: ($y)" foreach ($csv in $csvs) { Write-Host " "$csv.Name } $outputfilename = […]

在C#中列出excel工作簿连接

我想在C#中列出一个excel文件的连接。 使用COM接口,我可以打开excel文件,但是我怎样才能find引用?