繁体   English   中英

Excel-DNA:通过Excel-DNA的C API功能对行进行分组

[英]Excel-DNA: grouping rows via C API feature of Excel-DNA

我熟悉如何在Excel VSTO / COM互操作中对范围进行分组:

ws.EnableOutlining = true;
ws.Outline.SummaryRow = XlSummaryRow.xlSummaryAbove;
var rng = GetRangeSomeHow();
rng.EntireRow.Group();
rng.EntireRow.OutlineLevel = someLevel;

在Excel-DNA中最有效的方法是什么? 我可以想象必须有一种C-API方法,以某种方式将其巧妙地封装在Excel-DNA中,但是对于我一生,我无法通过在线文档(包括Google)来解决。

有很多帖子使用与上面的示例相似的代码,但是这些调用是非常昂贵的,尤其是因为我需要整体执行此操作约5000次(我有一个非常大的数据集)。

编辑:所以似乎有此方法调用:

XlCall.Excel(XlCall.xlfGroup...)

唯一的问题是,我不知道参数是什么。 似乎应该传递ExcelReference ,但是.EntireRow如何解析? C API会为我自己处理吗?在这种情况下,我只需要传递一个new ExcelReference(1,100,1,1)并用它完成...或者还有其他new ExcelReference(1,100,1,1)

预先感谢任何可以回答我的问题的人!

我认为C API GROUP函数不是您要找的功能。 该文件说:

从几个选定的对象中创建一个对象,并返回该组的对象标识符(例如“ Group 5”)。 使用GROUP组合多个对象,以便可以一起移动或调整它们的大小。

如果未选择任何对象,仅选择了一个对象或已选择了一个组,则GROUP返回#VALUE! 错误值并中断宏。

我建议您将COM对象模型用于这种情况,即使在Excel-DNA加载项中也是如此。 多年来,对于这种情况下的常规工作表操作,C API尚未真正更新,因此您可能会遇到某些功能无法正常使用或相对于COM对象模型不完整的功能。

从您的Excel-DNA加载项中,只需确保对ExcelDnaUtil.Application的调用即可ExcelDnaUtil.Application正确的Application根对象。

为了提高这种工作表编辑的性能,您几乎必须使用与VBA或VSTO相同的技巧-禁用屏幕更新和计算等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM