Tag:

将WorkSheet.UsedRange分配给PowerShell Excel自动化中的variables时性能会受到影响

我是新来的COM对象的工作,我已经读了我可以了解这个问题,但我似乎无法弄清楚这种行为。 我怀疑在封面下有什么明显的东西,我只是不明白。 我使用LogParser自动处理IIS日志,并在Excel中构build报告。 我开始使用我写的PowerShell模块中的以下代码块来获取最后一列: $used = $WorkSheet.usedRange $lastCell = $used.SpecialCells($xlCellTypeLastCell) if($Axis -eq 'Row'){$tmpLast = $lastCell.Row} if($Axis -eq 'Column'){$tmpLast = $lastCell.Column} Release-Ref $used $ WorkSheet是一个有效的工作表对象。 这个代码块在小工作表上效果很好,但随着工作表的大小增长,执行时间将会越来越长。 如果纸张太大,则会完全挂起。 此外,它会开始挂起我正在尝试使用的其他应用程序,我只是等待它完成,然后才能使用我的电脑。 这不是一个资源问题,因为我在一台配备24GB内存的i7上运行。 当我跨过PowerShell ISE(2.0)中的代码时,发现当我踩到Release-Ref $used时它挂起来了。 我不知道为什么它只会在大型工作表中挂起。 Large由25K行和15-20列定义,对于Excel可以处理的数量并不大。 这是Release-Reffunction: function Release-Ref{ [CmdletBinding(DefaultParameterSetName='Single')] param( [Parameter(Mandatory=$true,Position=0,ParameterSetName='Single')] [System.__ComObject]$ref, [Parameter(Mandatory=$true,Position=0,ParameterSetName='Array')] [System.__ComObject[]]$refs, [Switch]$Final ) if($Final){ [System.GC]::Collect() [System.GC]::WaitForPendingFinalizers() } if($PSCmdlet.ParameterSetName -eq 'Array'){ foreach($ref in $refs){ if($ref […]

Excel Interop或VSTO:为范围设置背景图像?

我无法find如何设置一个范围内的背景(不是在一个工作表内,这很容易)… 任何魔术师? 让 – 玛丽·

Excel Ribbon XML如何做一个像Excel的“数据透视表”控件一样的控件

我想在Add-In XMLfunction区中创build一个像Pivot-Table一样的控件。 这就像在顶部的一个可点击的button和下拉菜单打开一个菜单。 使用VSTO丝带devise器我无法重现它。 实际上我需要的是这个控件的XML。 任何想法 ?

Excel开发:如何检测范围与另一个范围重叠?

我正在处理一个VSTO Excel项目,并且遇到一些pipe理Range对象的麻烦。 其实我有我需要知道当前所选范围是否与我存储在列表中的另一个范围重叠的情况。 所以基本上,我有2个Range实例,我想比较他们的位置。 这看起来简单,对我来说很简单,但所有的Interopdynamic的东西,我有点困惑,我应该依赖哪些数据。

卸载Excel互操作插件时卸载插件.xla

我有一个Excel互操作模块A(显示在菜单栏上),当加载Excel时,该模块反过来加载另一个Excel加载项B.xla。 A通过msi安装程序安装到Excel中。 B.xla通过收费 AddIn addin = excelApp.AddIns.Add(xlaFile); if (!addin.Installed) addin.Installed = true; 当我卸载A时,安装程​​序所带的文件B.xla被删除。 A也从菜单栏和COM加载项列表中删除。 但是,B不会从macros加载项列表中删除。 因此,在卸载A之后,当我第一次打开Excel时,会显示一条消息,提示“加载项B丢失”。 我需要去macros加载项pipe理器取消B.点击取消选中后,Excel将再次说,它不能findB,并从列表中删除它。 如何在卸载程序的情况下从列表中取消激活和删除B,而无需通过加载项对话框/pipe理器? 当我执行A的更新时,这是一个问题。从菜单栏中删除了A.xla(文件本身)和A一起被删除,但是在Add-ins对话框中的B的条目仍然存在,并且将阻止尝试将新B注册到加载项对话框中的更新。 非常感谢。