VSTO:在"批量"中获取Excel单元格属性

Mic*_*oft 7 excel vsto

从Excel中的某个范围中获取值时,以"批量"(作为2D数组)获取值比循环遍历每个行和列更有效.例如:

Dim range = Globals.Table.Range("A1:E5")
Dim values(,) As Object = range.Value
Run Code Online (Sandbox Code Playgroud)

对于25个单元格而言,它没有太大的区别,但它确实有10,000行乘20列.到现在为止还挺好.

我的问题是:有没有人找到一种方法对其他属性进行同样的"批量"提取?例如,我想找到哪种细胞以某种方式着色.我很乐意做类似"range.Interior.Color"的事情,但只返回一个值,而不是一个值数组.所以我最终循环,这可能慢100或甚至1000倍.对于大型桌子,这真的是一个杀手.

PS:看起来像.Formula就像.Value:我可以一次取多个.但是我还没有把颜色变成好玩的颜色.

我感谢您的帮助!

Rac*_*ger 5

我不认为您可以将这些属性作为数组获取,因为Excel存储该信息的方式.Excel不会单独存储每个单元格的格式,而是存储特定的格式混合以及使用该格式的范围的内部"列表".

您可以通过创建具有各种格式的小型测试文件并将其保存为XML格式来了解格式化的存储方式(至少在2010年,您需要使用"XML Spreadsheet 2003").

这篇文章也可能有所帮助.