Per*_*ner 7 excel performance openxml openxml-sdk
使用OpenXML SDK v2.0删除20,000多行Excel文件中的第一行时,是否有人遇到性能问题?
我正在使用Open XML SDK文档中建议的删除行编码.使用Open XML SDK删除第一行只需要几分钟,但Excel应用程序只需要一秒钟.
我最终发现,瓶颈实际上是在处理行删除的泡沫方法.删除的行后有许多行更新.所以在我的情况下,大约有20,000行要更新,逐行向上移动数据.
我想知道是否有更快的方法来删除行.
有人有想法吗?
好吧,坏消息是:是的,事情就是这样。
您可能会获得稍微更好的性能,将其移至 SDK 本身之外,System.IO.Packaging只需在所有行中创建一个IEnumerable/ List(如 Linq-to-XML),将其复制到一个新的IEnumerable/ List(不含第一行),重写r属性<row r="?"/>以使其位于其中索引,并将其写回到<sheetData/>现有的子项中。
您需要对sharedStrings.xml文件中的任何字符串执行相同的操作- 即删除<ssi>.<si>已删除行中的元素,但在这种情况下,它们现在是隐式索引的,因此您可以直接删除它们就可以了。