0

由于使用 Excel API 通过 C# 代码分配给大工作表中的每个单元格可能效率很低,因此我试图分配给一系列单元格。但是, Range.Value2 仅适用于多维数组。就我而言,我有一个字符串列表。有没有办法做到这一点?在列表和数组之间来回转换可能效率低下。

谢谢

4

1 回答 1

1

Excel 互操作的成本是调用进程外组件的开销。需要做一些工作来跨流程边界编组数据。但这是一个恒定的成本,取决于数据量。数据越少越好,但这不是您的典型选择。

因此,真正的成本首先在于拨打电话的开销。与进行进程内方法调用的成本相比,这是非常可观的。在最坏的情况下,这需要几个 cpu 周期。进程外调用需要两个线程上下文切换,这至少需要 2000 到 10000 个周期,仅用于处理器开销。您处于该线程的高端,因为需要在 Excel 中运行的线程归另一个进程所有,因此处理器缓存是垃圾。添加该线程响应的延迟,高度不可预测。

因此,您有数万个 cpu 周期的预算来进行转换并取得成功。明智地使用它们。当然,实际尝试一下,没有人可以给你保证。

于 2012-11-10T02:00:27.193 回答