VSTO 高性能的获取EXCEL中的合并单元格

正常获取合并单元格通常是获取 UsedRange然后foreach每一个range来判断是否是合并单元格,但是这种方法对于EXCEL中包含大量数据的情况下,

效率非常低。经研究发现可以使用如下方法来获取合并单元格,性能大幅度提升。

这里使用VBA代码演示,VSTO用法基本相同。

 1 Sub DetectMerged()
 2 Dim rng1 As Range
 3 Dim rng2 As Range
 4 On Error Resume Next
 5 Set rng1 = Intersect(Cells.SpecialCells(xlFormulas), Cells.SpecialCells(xlBlanks))
 6 Set rng2 = Intersect(Cells.SpecialCells(xlConstants), Cells.SpecialCells(xlBlanks))
 7 On Error GoTo 0
 8 If Not rng1 Is Nothing Then MsgBox "Merged formulae cells in " & rng1.Address(0, 0)
 9 If Not rng2 Is Nothing Then MsgBox "Merged constant cells in " & rng2.Address(0, 0)
10 End Sub

 

这里得到 rng1 和rng2 后 再使用foreach就可以。但是,也要判断一下是否是合并单元格。

上一篇:【终极解决方案】为应用程序池“XXX”提供服务的进程在与 Windows Process Activation Service 通信时出现严重错误。该进程 ID 为“XXXX”。数据字段包含错误号。


下一篇:ExcelPackage 使用說明