2

我有一个 Excel COM 插件,它读取工作簿的 CustomDocumentProperties 部分。

这就是我从 CustomDocumentProperties 部分访问特定条目的方式

DocumentProperties docProperties = (DocumentProperties)
                    xlWorkbook.CustomDocumentProperties;

            docProperty = docProperties[propName];

问题是当 CustomDocumentProperties 包含超过 8000 个条目时,此代码的性能非常糟糕。我已经运行了 CPU 分析器,它显示以下行需要一分钟多的时间。

docProperty = docProperties[propName];

有谁知道如何提高访问 DocumentProperties 的性能?

谢谢!

4

1 回答 1

1

我怀疑您可以做些什么来提高文档属性的性能。我相信它是作为一个简单的列表实现的——而不是作为字典或哈希表。事实上,我不相信该列表是排序的,因此对于 8000 个条目,平均而言,必须访问其中一半或 4000 个条目才能找到您要查找的属性。

您可能会考虑不将 CustomDocumentProperties 用作字典。相反,您可以尝试将所有 8000 个条目放入自定义字典中,对其进行序列化,然后将整个序列化字典作为单个条目添加到 CustomDocumentProperties。因此,要使用它,您将访问 CustomDocumentProperties,反序列化字典,然后重复使用它。完成后,如果字典有任何更改,则必须重新序列化它并将其保存回 CustomDocumentProperties,您可能只想执行一次 - 例如,在保存工作簿之前。(您可能希望将代码重新序列化并将自定义字典保存到Workbook.BeforeSave事件中的 CustomDocumentProperties。)

于 2010-01-21T16:54:17.180 回答