Импорт и экспорт Excel-какая библиотека является лучшей? [закрытый]

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

требования:

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

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

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

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


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

20 ответов


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

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

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


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


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

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

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


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

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


SpreadsheetGear для .NET читает и пишет CSV / XLS / XLSX и делает больше.

вы можете увидеть в прямом эфире ASP.NET примеры с исходным кодом C# и VB здесь и скачать бесплатную пробную версию здесь.

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

отказ от ответственности: я владею SpreadsheetGear LLC


NPOI для Excel 2003 открытый исходный код http://www.leniel.net/2009/07/creating-excel-spreadsheets-xls-xlsx-c.html


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


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


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

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

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


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

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

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

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

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

весь исходный код приведен, бесплатно, а также демо приложение.

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

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

надеюсь, что это помогает.


Регистрация ExcelPackage проект, он использует формат файла Office Open XML Excel 2007, он легкий и с открытым исходным кодом...


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


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


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


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

мы почти отвлеклись на то же самое:

  1. подготовка / работа в файле электронной таблицы
  2. "сохранить файл"
  3. импорт файла
  4. работа с данными в системе

... workflow

надстройка Express позволяет создать кнопку в Excel без всей этой нудной возни с VSTO. Затем рабочий процесс становится:

  1. подготовка / работа в файле электронной таблицы
  2. импорт файла (с помощью кнопки в Excel)
  3. работа с данными в системе

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


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

Excel XML Импорт-Экспорт библиотеки

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

Ура


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


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


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