Импорт и экспорт Excel - Какая лучшая библиотека?

В одном из наших приложений ASP.NET на С# мы берем определенный сбор данных (коллекцию SubSonic) и экспортируем его в Excel. Мы также хотим импортировать файлы Excel в определенном формате. Я ищу библиотеку, которую я могу использовать для этой цели.

Требования:

  • Файлы Excel 2007 (Поддерживает ли Excel 2003 более 64 тыс. строк? Мне нужно больше.)
  • Не требуется Excel на сервере
  • Получает типизированную коллекцию и, если возможно, пытается поместить числовые поля в числовое число в Excel.
  • Хорошо работает с большими файлами (от 100 к до 10 М) - достаточно быстро.
  • При экспорте GUID не сбой!
  • Не стоит покупать деньги (нет корпоративной библиотеки, такой как aspose). Бесплатно всегда здорово, но может быть коммерческой библиотекой.

Какую библиотеку вы рекомендуете? Вы использовали его для большого количества данных? Существуют ли другие решения?

Сейчас я использую простой инструмент, который генерирует HTML, который позже загружается Excel, но я теряю некоторые возможности, плюс Excel жалуется, когда мы его загружаем. Мне не нужно создавать диаграммы или что-то в этом роде, просто экспортируйте необработанные данные.

Я думаю о плоских CSV файлах, но Excel - это требование клиента. Я могу работать с CSV напрямую, если бы у меня был инструмент для конвертирования в Excel и из него. Учитывая, что Excel 2007 представляет собой формат файла на основе xml (и zipped), я предполагаю, что такую ​​библиотеку следует легко найти. Однако для меня важны ваши комментарии и мнения.


EDIT: По иронии судьбы, по моему мнению, и после ответа с наибольшим количеством голосов лучшая библиотека экспорта Excel и экспорта не экспортирует вообще. Это не относится ко всем сценариям, но это для меня. Файлы XLS поддерживают только строки 64k. XLSX поддерживает до 1M. Свободные библиотеки, которые я пробовал, имеют плохую производительность (одна секунда для загрузки одной строки, когда у вас есть 200 тыс. Строк). Я не пробовал заплатить, так как я чувствую, что они переоценены за ценность, которую они приносят, когда все, что вам нужно, это быстрая процедура преобразования XLSX ↔ CSV.

Ответ 1

Я собираюсь бросить свою руку для плоских CSV файлов, хотя бы потому, что у вас есть лучший контроль над кодом. Просто убедитесь, что вы читаете строки и обрабатываете их по одному (чтение документа до конца, а расщепление будет уничтожать всю вашу память - то же самое с записью, выпустить его).

Да, пользователю нужно будет сохранить CSV в Excel, прежде чем вы сможете его обработать, но, возможно, это ограничение можно преодолеть путем обучения и предоставления четких инструкций на странице?

Наконец, когда вы экспортируете клиенту, если вы устанавливаете тип mime в text/csv, Excel обычно сопоставляется с этим типом, поэтому пользователю представляется "файл Excel".

Ответ 2

Я обнаружил Open XML SDK с моего первоначального ответа. Он предоставляет, в частности, строго типизированные классы для объектов электронной таблицы и, по-видимому, довольно легко работать. Я собираюсь использовать его для отчетов в одном из моих проектов. Увы, версия 2.0 не должна появляться до конца 2009 или 2010 года.

Ответ 3

новая версия ExcelPackage здесь http://EPPlus.codeplex.com

Я по-прежнему сражаюсь с экспортом в excel, поскольку мое приложение должно экспортировать некоторые данные в excel-template 2007

этот проект мне кажется прекрасным, и разработчик очень чутко реагирует на ошибки и проблемы.

Ответ 4

Я использую ClosedXML, и он отлично работает!

ClosedXML упрощает создание разработчиками Excel 2007/2010 файлы. Он обеспечивает хороший объектно-ориентированный способ манипулирования файлами (аналогично VBA), не имея дело с проблемами XML-документов. Это может использоваться любым языком .NET, таким как С# и Visual Basic (VB).

Ответ 5

SpreadsheetGear for.NET читает и записывает CSV/XLS/XLSX и делает больше.

Вы можете увидеть текущие образцы ASP.NET с исходным кодом С# и VB здесь и загрузить бесплатную пробную версию здесь.

Конечно, я считаю, что SpreadsheetGear - лучшая библиотека для импорта/экспорта книг Excel в ASP.NET, но я предвзятый. Вы можете видеть, что некоторые из наших клиентов говорят в правой части эту страницу.

Отказ от ответственности: у меня есть SpreadsheetGear LLC

Ответ 7

Я использовал Flexcel в прошлом, и это было здорово. Но это было больше для программного создания и обновления рабочих листов excel.

Ответ 8

Экспорт CSV прост, прост в реализации и быстро. Однако есть одна потенциальная проблема. Excel (до 2007 года) не сохраняет ведущие нули в файлах CSV. Это приведет к искажению почтовых индексов, идентификаторов продуктов и других текстовых данных, содержащих числовые значения. Существует один трюк, который заставит Excel правильно импортировать значения (используя разделители и префиксные значения с помощью знака =, если я правильно помню, например.., = "02052",...). Если у вас есть пользователи, которые будут выполнять задачи пост-обработки с помощью CSV, им необходимо знать, что им нужно изменить формат на XLS и не сохранять файл обратно в CSV. Если они это сделают, ведущие нули будут потеряны навсегда.

Ответ 9

В течение многих лет я использовал JExcel для этого, отличный Java-проект с открытым исходным кодом. Это также было возможно .NET, используя J # для его компиляции, и я также имел большой успех в этом воплощении. Однако в последнее время мне пришлось перенести код на собственный .NET для поддержки 64-разрядного приложения IIS, в котором я создаю вывод Excel. 32-разрядная версия J # не загружается.

Код CSharpJExcel - это LGPL и доступен в настоящее время на странице этой, пока мы готовимся к его развертыванию на сайте JExcel SourceForge. Он будет компилироваться с VS2005 или VS2008. Примеры в исходной документации JExcel довольно хорошо переносятся на версию .NET.

Надеюсь, что это полезно для кого-то здесь.

Ответ 10

Я долгое время работал с excel jetcell и могу порекомендовать его. http://www.devtriogroup.com/exceljetcell

  • Коммерческий продукт
  • Файлы Excel XLS и XLSX
  • На основе собственного движка в чистой сети.

Ответ 11

Следующий сайт демонстрирует, как экспортировать DataTable, DataSet или List < > в "правильный" Excel.xlsx файл Excel (а не экспортировать CSV файл и получить Excel для его открытия).

Он использует библиотеки OpenXML, поэтому вам не нужно, чтобы на вашем сервере был установлен Excel.

База знаний Mikes - ExportToExcel

Все исходные коды даны бесплатно, а также демонстрационное приложение.

Очень легко добавить в свои собственные приложения, вам просто нужно вызвать одну функцию, передать имя файла Excel и источник данных:

DataSet ds = CreateSampleData();
string excelFilename = "C:\\Sample.xlsx";
CreateExcelFile.CreateExcelDocument(ds, excelFilename);

Надеюсь, что это поможет.

Ответ 12

Проверьте проект ExcelPackage, он использует формат файла Office Open XML Excel 2007, легкий и открытый с...

Ответ 13

Вы можете использовать Microsoft.Jet.OLEDB.4.0

Ответ 14

Я пробовал CSharpJExcel и не рекомендовал бы его, по крайней мере, до тех пор, пока не появится какая-либо документация. В отличие от комментариев разработчиков, это не прямой родной порт.

Ответ 15

Я знаю, что это довольно поздно, но я вынужден ответить xPorter (запись) и xlReader (чтение) из xPortTools.Net. Мы протестировали довольно много библиотек, и ничто не приблизилось к производительности (я говорю о написании миллионов строк за несколько секунд здесь). Не могу сказать достаточно хороших вещей об этих продуктах!

Ответ 16

Там очень хорошая статья и библиотека по CodeProject от Yogesh Jagota:

Экспортно-экспортная библиотека Excel XML

Я использовал его для экспорта данных из SQL-запросов и других источников данных в Excel - отлично работает для меня.

Приветствия

Ответ 17

Мы только что идентифицировали подобную потребность. И я считаю важным учитывать опыт пользователей.

Мы чуть не зашли так же:

  • Подготовить/работать в файле электронных таблиц
  • Сохранить файл
  • Импортировать файл
  • Работа с данными в системе

... рабочий процесс

Add-in Express позволяет вам создать кнопку в Excel без всякой скучной работы с VSTO, Затем рабочий процесс будет следующим:

  • Подготовить/работать в файле электронных таблиц
  • Импортировать файл (используя кнопку внутри Excel)
  • Работа с данными в системе

Введите код за кнопкой, используя "собственный" Excel API (через надстройку Express) и нажмите прямо в систему получателей. Вы не можете стать более прозрачным для разработчика или пользователя. Стоит рассмотреть.

Ответ 18

Вы можете попробовать следующую библиотеку, это достаточно просто, и это просто легкая оболочка над Microsoft Open XML SDK (вы даже можете использовать форматирование, стили и даже целые листы из вторичного файла Excel): http://officehelper.codeplex.com

Ответ 19

Spreadsheetgear - лучшая коммерческая библиотека, которую мы нашли и используем. Наша компания делает много продвинутых импорт и экспорт excel, а Spreadsheetgear поддерживает множество продвинутых функций excel, намного превосходящих все, что вы можете сделать с простым CSV, и это быстро. Это не бесплатно или очень дешево, но стоит того, потому что поддержка отличная. Разработчики ответят на вас, если у вас возникнут проблемы.

Ответ 20

Как насчет java-библиотеки apache POI. Я не использовал его для Excel, но использовал его для Word 2007.