В одном из наших приложений ASP.NET в C # мы берем определенный набор данных (SubSonic collection) и экспортируем его в Excel. Мы также хотим импортировать файлы Excel в определенном формате. Я ищу библиотеку, которую я могу использовать для этой цели.
Требования:
- Файлы Excel 2007 (поддерживает ли Excel 2003 более 64 тыс. Строк? Мне нужно больше.)
- Не требует Excel на сервере
- Принимает типизированную коллекцию и, если может, пытается поместить числовые поля как числовые в Excel.
- Хорошо работает с большими файлами (от 100К до 10М) - достаточно быстро.
- Не вылетает при экспорте GUID!
- Не стоит дерьмо денег (нет корпоративной библиотеки, как Aspose). Бесплатно всегда здорово, но может быть коммерческая библиотека.
Какую библиотеку вы рекомендуете? Вы использовали это для больших объемов данных? Есть ли другие решения?
Прямо сейчас я использую простой инструмент, который генерирует HTML, который загружается Excel позже, но я теряю некоторые возможности, плюс Excel жалуется, когда мы его загружаем. Мне не нужно генерировать диаграммы или что-то в этом роде, просто экспортируйте необработанные данные.
Я думаю о плоских файлах CSV, но Excel - это требование клиента. Я могу работать с CSV напрямую, если бы у меня был инструмент для конвертации в и из Excel. Учитывая, что Excel 2007 является форматом файлов на основе xml (и в формате zip), я предполагаю, что этот тип библиотеки должен быть легко найден. Тем не менее, для меня важнее всего ваши комментарии и мнения.
РЕДАКТИРОВАТЬ: по иронии судьбы, по моему мнению и после ответа с большинством голосов, лучшая библиотека импорта и экспорта в Excel не экспорт вообще. Это относится не ко всем сценариям, но к моему. Файлы XLS поддерживают только 64 тыс. Строк. XLSX поддерживает до 1М. Бесплатные библиотеки, которые я пробовал, показывают плохую производительность (одна секунда, чтобы загрузить одну строку, когда у вас есть 200k строк). Я не пробовал платные, потому что чувствую, что они завышены по цене, которую они предоставляют, когда все, что вам нужно, это быстрая процедура преобразования XLSX <-> CSV.
источник
Ответы:
Я собираюсь отдать свою руку для плоских CSV-файлов, хотя бы потому, что у вас есть самый большой контроль над кодом. Просто убедитесь, что вы читаете по строкам и обрабатываете их по одному (чтение документа до конца и разделение израсходуют всю вашу память - то же самое с записью, выгрузите ее).
Да, пользователь должен будет сохранить как CSV в Excel, прежде чем вы сможете его обработать, но, возможно, это ограничение можно преодолеть, обучив и предоставив четкие инструкции на странице?
Наконец, когда вы экспортируете клиенту, если вы устанавливаете тип mime для text / csv, Excel обычно сопоставляется с этим типом, поэтому для пользователя он выглядит как «файл Excel».
источник
Я обнаружил Open XML SDK с момента моего первоначального ответа. Помимо прочего, он предоставляет строго типизированные классы для объектов электронных таблиц, и с ним довольно просто работать. Я собираюсь использовать его для отчетов в одном из моих проектов. Увы, версия 2.0 не должна выпускаться до конца 2009 или 2010 года.
источник
новая версия ExcelPackage находится здесь http://EPPlus.codeplex.com
Я все еще борюсь с функцией экспорта в Excel, так как мое приложение должно экспортировать некоторые данные в Excel-шаблон 2007
этот проект кажется мне подходящим, и разработчик очень чутко реагирует на ошибки и проблемы.
источник
Я использую ClosedXML, и он прекрасно работает!
источник
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
источник
На следующем сайте показано, как экспортировать DataTable, DataSet или List <> в «правильный» файл Excel 2007.xlsx (вместо экспорта файла .csv и получения Excel, чтобы открыть его).
Он использует библиотеки OpenXML, поэтому вам не нужно устанавливать Excel на ваш сервер.
База знаний Майка - ExportToExcel
Весь исходный код предоставляется бесплатно , а также демонстрационное приложение.
Это очень легко добавить в ваши собственные приложения, вам просто нужно вызвать одну функцию, передавая имя файла Excel и ваш источник данных:
Надеюсь это поможет.
источник
Проверьте проект ExcelPackage , он использует формат Office Open XML в формате Excel 2007, он легкий и с открытым исходным кодом ...
источник
Я попробовал CSharpJExcel и не рекомендую его, по крайней мере, пока не будет доступной документации. Вопреки комментариям разработчиков, это не прямой нативный порт.
источник
Я знаю, что уже довольно поздно, но я чувствую себя обязанным ответить на xPorter (запись) и xlReader (чтение) из xPortTools.Net . Мы протестировали довольно много библиотек, и ничего не приблизилось к производительности (я говорю о записи миллионов строк за секунды). Не могу сказать достаточно хороших слов об этих продуктах!
источник
Ты можешь использовать
Microsoft.Jet.OLEDB.4.0
источник
Мы только что определили аналогичную потребность. И я думаю, что важно учитывать пользовательский опыт.
Мы почти отвлеклись на то же самое:
... рабочий процесс
Надстройка Express позволяет вам создавать кнопки в Excel без всего этого утомительного хулиганства с VSTO. Тогда рабочий процесс становится:
Сделайте так, чтобы код за кнопкой использовал «родной» Excel API (через Add-in Express) и вставил прямо в систему получателя. Вы не можете стать намного более прозрачным для разработчика или пользователя. Стоит учесть.
источник
Есть довольно хорошая статья и библиотека по CodeProject от Йогеша Яготы:
Библиотека импорта-экспорта Excel XML
Я использовал его для экспорта данных из SQL-запросов и других источников данных в Excel - прекрасно работает для меня.
ура
источник
Вы можете попробовать следующую библиотеку, она достаточно проста и является простой оболочкой для Microsoft Open XML SDK (вы даже можете повторно использовать форматирование, стили и даже целые листы из вторичного файла Excel): http://officehelper.codeplex.com
источник
Spreadsheetgear - лучшая коммерческая библиотека, которую мы нашли и используем. Наша компания выполняет множество расширенных функций импорта и экспорта в Excel, а Spreadsheetgear поддерживает множество расширенных функций Excel, выходящих далеко за пределы всего, что вы можете сделать с помощью простого CSV, и это быстро. Это не бесплатно или очень дешево, но стоит, потому что поддержка отличная. Разработчики действительно ответят вам, если вы столкнетесь с проблемой.
источник
Как насчет библиотеки Java Apache POI. Я не использовал его для Excel, но использовал его для Word 2007.
источник