Кто-либо сталкивается с проблемой производительности при удалении первой строки в 20,000 + строки файл Excel с помощью OpenXML SDK v2.0?
Я использую удалить кодирование строки, предложенное в открытую XML документ SDK. Это берет мне, несколько минут только для удаления первого использования строки Открывают XML SDK, но только требуется только секунда в приложении Excel.
Я в конечном счете узнал, что узкое место находится на самом деле на пузырьковом подходе имея дело с удалением строки. Существует много строк, обновляющих после удаленной строки. Таким образом в моем случае, существует приблизительно 20 000 строк, которые будут обновлены, смещая строку данных строкой.
Интересно, существует ли какой-либо более быстрый способ сделать удаление строки.
У кого-либо есть идея?
Что ж, плохие новости: ага, так оно и есть .
Вы можете немного повысить производительность, перейдя за пределы самого SDK в System.IO.Упаковка
и создание IEnumerable
/ List
в виде Linq-to-XML всех строк, скопируйте его в новый IEnumerable
/ ] List
без первой строки, перепишите атрибут r
для
, чтобы он занял его место в индексе, и напишите это обратно внутри
над существующими дочерними элементами.
Вам нужно будет сделать то же самое для любых строк в файле sharedStrings.xml , то есть удалить элементы
, которые были в строка, которая была удалена, но в этом случае они теперь неявно проиндексированы, поэтому вы можете просто удалить их.