Откройте XML SDK v2.0 проблема Производительности при удалении первой строки в 20 000 + строки файл Excel

Кто-либо сталкивается с проблемой производительности при удалении первой строки в 20,000 + строки файл Excel с помощью OpenXML SDK v2.0?

Я использую удалить кодирование строки, предложенное в открытую XML документ SDK. Это берет мне, несколько минут только для удаления первого использования строки Открывают XML SDK, но только требуется только секунда в приложении Excel.

Я в конечном счете узнал, что узкое место находится на самом деле на пузырьковом подходе имея дело с удалением строки. Существует много строк, обновляющих после удаленной строки. Таким образом в моем случае, существует приблизительно 20 000 строк, которые будут обновлены, смещая строку данных строкой.

Интересно, существует ли какой-либо более быстрый способ сделать удаление строки.

У кого-либо есть идея?

7
задан Todd Main 23 July 2010 в 22:16
поделиться

1 ответ

Что ж, плохие новости: ага, так оно и есть .

Вы можете немного повысить производительность, перейдя за пределы самого SDK в System.IO.Упаковка и создание IEnumerable / List в виде Linq-to-XML всех строк, скопируйте его в новый IEnumerable / ] List без первой строки, перепишите атрибут r для , чтобы он занял его место в индексе, и напишите это обратно внутри над существующими дочерними элементами.

Вам нужно будет сделать то же самое для любых строк в файле sharedStrings.xml , то есть удалить элементы . , которые были в строка, которая была удалена, но в этом случае они теперь неявно проиндексированы, поэтому вы можете просто удалить их.

4
ответ дан 7 December 2019 в 14:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: