由于使用Excel API通过C#代码为大型工作表中的每个单元格赋值的效率非常低,因此我尝试将其赋值给一个单元格范围。但是,Range.Value2只适用于多维数组。在我的例子中,我有一个字符串列表。有没有办法做到这一点?在列表和数组之间来回转换可能效率低下。
谢谢
发布于 2012-11-10 10:00:27
Excel互操作的开销是调用进程外组件的开销。需要完成跨流程边界编组数据的工作。但这是一个恒定的成本,取决于数据量。数据越少越好,但这不是你的典型选择。
因此,真正的成本是首先进行调用的开销。与进行进程内方法调用的成本相比,这是非常可观的。在最坏的情况下,这需要几个cpu周期。进程外调用需要两次线程上下文切换,仅处理器开销就需要2000到10000个周期。这是因为需要在Excel中运行的线程属于另一个进程,所以处理器缓存是垃圾。增加该线程响应的延迟,这是非常不可预测的。
因此,您有数万个cpu周期的预算来进行转换并取得进展。明智地使用它们。当然,实际上, it,没有人能保证。
https://stackoverflow.com/questions/13318408
复制相似问题