Как лучше всего экспортировать собственные данные в Excel, не вводя зависимость от Office? - PullRequest
3 голосов
/ 10 ноября 2008

Наш продукт требует экспортировать свой собственный формат (по сути, файл XML) в Excel для просмотра / редактирования. Однако, это влечет за собой зависимость от самого Excel (или Office) для нашей сборки продукта - то, чего мы не хотим.

Что мы сделали, это экспортировали данные из нашего собственного формата в файл CSV, который можно открыть в Excel. Если пользователь выбирает вариант, чтобы открыть сгенерированный отчет, мы (пытаемся) запустить приложение Excel, чтобы открыть его (конечно, для этого необходимо, чтобы Excel уже присутствовал в клиентской системе).

Данные по большей части представляют собой плоский список записей.

Существует ли лучший формат (или даже лучший способ) для удовлетворения этого требования? Это общее требование для многих продуктов - как вы справляетесь с этим?

Ответы [ 10 ]

2 голосов
/ 10 ноября 2008

Как отмечали другие люди, генерировать файлы Excel XML довольно просто. Вы можете сделать это несколькими способами. Например:

  1. Создав шаблон XML-документа Excel, а затем используя XML DOM для вставки данных в шаблон, или
  2. Преобразование шаблона Excel XML в XSLT, а затем просто передача проприетарного XML в качестве ввода в XSLT.
2 голосов
/ 10 ноября 2008

Версии Excel, как 2007, так и несколько предыдущих, имеют собственные форматы XML. 2007, очевидно, является XML по умолчанию, и более ранние версии имеют возможность сохранять как XML. Этот ТАК вопрос касается вопроса. Я предполагаю, что небольшая проверка даст представление о том, что требуется. Я не знаю, существует ли XSD / DTD для более старых версий, но немного творческого поиска в Google может что-то дать.

1 голос
/ 10 ноября 2008

Если .csv недостаточно отформатирован, вы можете создать шаблон в Excel и использовать немного кода VBA для импорта CSV и форматировать его соответствующим образом. Таким образом, ваше приложение занимается только созданием .CSV и будет использовать один и тот же .XLS для каждого экспорта.

Если вы будете осторожны, вы сможете беспрепятственно работать с большинством версий Excel.

1 голос
/ 10 ноября 2008

Мы экспортируем наши данные, используя объекты Excel (код на основе COM) на стороне клиента или файл CSV (обычно на стороне сервера, но также могут использоваться на стороне клиента). И мы разрешаем копировать данные из сеток в простом HTML-формате, что можно без проблем вставить в Excel. Для одного клиента нам даже пришлось экспортировать данные [из хранимой процедуры sql] в csv-подобный формат с разделением табуляцией, но с именем файла, например xxxxx.xls - таким образом, Excel открыл этот файл более корректно, чем CSV-файл. Гадкий взлом, но сработал хорошо.

CSV является наиболее совместимым форматом (не зависит от внешних приложений или библиотек), но клиентам это не нравится. Может быть, нам нужно включить некоторый код экспорта XLS, чтобы все пользователи были счастливы:)

1 голос
/ 10 ноября 2008

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

ExcelPackage позволяет создавать документы OOXML (файлы .xslx), которые изначально совместимы с 2k7, но вы можете загрузить плагин для предыдущих версий Office из MS.

0 голосов
/ 05 марта 2013

Если вы используете C # или VB.Net, и ваши данные находятся в DataSet, DataTable или List <>, вы можете использовать мой бесплатный класс «Экспорт в Excel».

Он использует бесплатные библиотеки Microsoft OpenXML (так что вам не нужно иметь Excel на вашем сервере) и позволяет экспортировать ваши данные в "настоящие" .xlsx файл с одной строкой кода, например:

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

Весь исходный код предоставлен на следующей странице вместе с демонстрационным проектом, совершенно бесплатно (и всплывающие окна!)

http://mikesknowledgebase.com/pages/CSharp/ExportToExcel.htm

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

0 голосов
/ 21 октября 2011

Мы используем комбинацию OleDB и Interop. Мы обнаружили, что Interop работает намного быстрее и использует меньше памяти, но это вызывает проблемы совместимости, особенно при установке Office на других языках. Преимущество OleDb заключается в том, что вам не нужно устанавливать Excel на клиентский компьютер. И Interop, и OleDb поддерживают несколько листов (таблиц) для каждой книги, что нельзя сделать с помощью csv.

0 голосов
/ 10 ноября 2008

Я использовал FlexCel Studio для нескольких проектов сейчас. Это очень функционально и быстро. 100% управляемый код, без зависимостей. Похоже, вы используете функцию «Отчеты», которая позволяет вам определить пустой шаблон отчета в Excel, а затем передать данные и volia, он заполнен вашими данными.

Программное обеспечение TMS

0 голосов
/ 10 ноября 2008

Мы начали с Office на сервере, но это не очень хорошо. Мы должны были убить процессы, которые зависали, и имели некоторое снижение производительности. Мы думали о том, чтобы поставить его на другую машину, но не удосужились попробовать и использовать Aspose (коммерческий) У нас не очень много одновременных пользователей, но сложные документы. Простые могут быть обработаны с помощью CSV.

0 голосов
/ 10 ноября 2008

Если вы работаете в Java, извлеките проект POI из APACHE. http://poi.apache.org/

Простой, красивый, полный, мощный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...