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


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

требования:

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

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

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

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


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

20 173

20 ответов:

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

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

наконец, при экспорте в клиент, если вы установите тип MIME в текст/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 files 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. работа с данными в системе

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

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

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

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

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

Excel XML Import-Export Library

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

Ура

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

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

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