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)
并完成它......或者还有更多吗?
提前感谢任何能回答我问题的人!
我认为 C API GROUP
函数不是您要找的函数。文档说:
GROUP
Creates a single object from several selected objects and returns the
object identifier of the group (for example, "Group 5"). Use GROUP to
combine a number of objects so that you can move or resize them
together.
If no object is selected, only one object is selected, or a group is
already selected, GROUP returns the #VALUE! error value and interrupts
the macro.
我建议您对此类事物使用 COM 对象模型,即使在 Excel-DNA 加载项中也是如此。多年来,C API 并没有真正针对像这种情况下的一般 sheet 操作进行更新,因此您可能 运行 某些功能无法正常工作或相对于 COM 对象模型不完整。
在您的 Excel-DNA 加载项中,只需确保通过调用 ExcelDnaUtil.Application
.
获取正确的应用程序根对象
为了提高这种 sheet 编辑的性能,您几乎必须使用与 VBA 或 VSTO 相同的技巧 - 禁用屏幕更新和计算等。
我熟悉如何在 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)
并完成它......或者还有更多吗?
提前感谢任何能回答我问题的人!
我认为 C API GROUP
函数不是您要找的函数。文档说:
GROUP
Creates a single object from several selected objects and returns the object identifier of the group (for example, "Group 5"). Use GROUP to combine a number of objects so that you can move or resize them together.
If no object is selected, only one object is selected, or a group is already selected, GROUP returns the #VALUE! error value and interrupts the macro.
我建议您对此类事物使用 COM 对象模型,即使在 Excel-DNA 加载项中也是如此。多年来,C API 并没有真正针对像这种情况下的一般 sheet 操作进行更新,因此您可能 运行 某些功能无法正常工作或相对于 COM 对象模型不完整。
在您的 Excel-DNA 加载项中,只需确保通过调用 ExcelDnaUtil.Application
.
为了提高这种 sheet 编辑的性能,您几乎必须使用与 VBA 或 VSTO 相同的技巧 - 禁用屏幕更新和计算等。