Есть ли у кого-нибудь тесты компонентов .Net Excel IO?

Мне нужен доступ к книгам Excel из .Net. Я знаю все о различных способах сделать это (я написал их в Сообщение блога), и я знаю, что использование собственного компонента .Net будет самым быстрым. Но вопрос в том, какая из составляющих выигрывает? Кто-нибудь их сравнивал? Я использовал Syncfusion XlsIO, но это очень медленно для некоторых ключевых операций (например, удаление строк в книге, содержащей тысячи именованных диапазонов).

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
0
538
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Не могу помочь вам с исходным вопросом, но знаете ли вы, что вы можете получить доступ к файлам Excel с помощью OleDbConnection и, следовательно, рассматривать их как базу данных? Затем вы можете читать листы в DataTable, вносить все необходимые изменения в данные в вашем приложении, а затем сохранять все это обратно в файл с помощью OleDbConnection.

Пол, спасибо. Я знал об этом (возможно, мне стоит включить это в свой блог). Однако в данном случае мне действительно нужны не те данные. Это такие вещи, как стиль и форматирование ячеек и т. д. Сэм

Samuel Jack 18.08.2008 17:10
Ответ принят как подходящий

Я не проводил никаких надлежащих тестов, но я попробовал несколько других компонентов и обнаружил, что Таблица был значительно быстрее, чем XlsIO, который я использовал раньше. Я записал некоторые из моих выводов в этом почтовый

Да, но я не собираюсь публиковать их оба из любезности Syncfusion (они просят вас не публиковать тесты производительности), потому что я не опытный тестировщик, поэтому мои тесты, вероятно, несколько ошибочны, но в основном потому, что то, что вы на самом деле тестируете, делает огромная разница в том, кто и сколько выиграет.

Я взял один из их примеров «производительности» и добавил ту же процедуру в EPPlus, чтобы сравнить их. XLSIO был примерно на 15% быстрее с простыми вставками, в зависимости от соотношения строк / столбцов (я пробовал несколько), использование памяти казалось очень похожим. Когда я добавил процедуру, которая после добавления всех строк удаляла каждую 10-ю строку, а затем вставляла новую строку на 2 строки выше, - XLSIO был значительно медленнее в этом случае.

Стандартный тест для вас практически бесполезен. Вам нужно попробовать их друг против друга в конкретных сценариях, которые вы используете.

Я использую EPPlus несколько лет, и производительность была в порядке, я не помню, чтобы кричал на него.

Более достойными вашего внимания являются функциональность, поддержка (по моему опыту, Syncfusion была хорошей), документация, доступ к исходному коду, если это важно, и, что немаловажно, насколько важен для вас API, синтаксис может быть достаточно разный. например. Именованные стили

XLSIO

headerStyle.BeginUpdate();
workbook.SetPaletteColor(8, System.Drawing.Color.FromArgb(255, 174, 33));
headerStyle.Color = System.Drawing.Color.FromArgb(255, 174, 33);
headerStyle.Font.Bold = true;
headerStyle.Borders[ExcelBordersIndex.EdgeLeft]  .LineStyle = ExcelLineStyle.Thin;
headerStyle.Borders[ExcelBordersIndex.EdgeRight] .LineStyle = ExcelLineStyle.Thin;
headerStyle.Borders[ExcelBordersIndex.EdgeTop]   .LineStyle = ExcelLineStyle.Thin;
headerStyle.Borders[ExcelBordersIndex.EdgeBottom].LineStyle = ExcelLineStyle.Thin;
headerStyle.EndUpdate();

EPPlus

ExcelNamedStyleXml headerStyle = xlPackage.Workbook.Styles.CreateNamedStyle("HeaderStyle");
headerStyle.Style.Fill.PatternType = ExcelFillStyle.Solid; // <== needed or BackgroundColor throws an exception
headerStyle.Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.FromArgb(255, 174, 33));
headerStyle.Style.Font.Bold = true;
headerStyle.Style.Border.Left.Style   = ExcelBorderStyle.Thin;
headerStyle.Style.Border.Right.Style  = ExcelBorderStyle.Thin;
headerStyle.Style.Border.Top.Style    = ExcelBorderStyle.Thin;
headerStyle.Style.Border.Bottom.Style = ExcelBorderStyle.Thin;

Другие вопросы по теме