Delphi сохранить RichEdit как Excel

Как бы вы сохранили текст TRichedit в файл Excel?

У меня есть данные, разделенные вертикальной вкладкой № 9, и если я сохраню их в .xls, они откроются, но я хотел бы избавить пользователей от необходимости сохранять их снова как excel после их открытия.

Спасибо, Дэйв Альберт.


person Dave Albert    schedule 14.05.2009    source источник


Ответы (4)


Есть несколько способов сделать это. Ваш вопрос не очень точен в отношении того, с какими данными вы работаете, поэтому вы должны знать, что в Excel могут быть ограничения (особенно в зависимости от версии Excel) для отображения обширных данных RichEdit, если вы не используете текстовое поле. Поскольку затем вы говорите, что у вас есть данные с разделителями, я предполагаю, что на самом деле это табличная структура, которая не содержит изображений и тому подобного. Следуя этому предположению, вы можете использовать:

  • OpenOffice как решение, как упоминает skamradt. Вы должны знать, что это не ActiveX и использует, IMO, плохо документированный интерфейс OLE. Если вы пойдете этим путем, то обнаружите, что сайт Эндрю Питоньяка действительно помогает. Вам также может понадобиться Delphi OO образцы Бернарда Марселли из SourceForge как хорошая отправная точка.
  • Используйте Excel в качестве объекта автоматизации OLE. Есть много примеров того, как это сделать. Одно руководство, которое может быть похоже на то, что вам нужно, находится здесь. Вероятно, это самое простое решение, так как вы можете открыть данные с вкладками с помощью автоматизации, а затем выполнить команду «Сохранить как».
  • Используйте что-то другое, кроме RichEdit. Например, у DevExpress есть продукт сетки, который поставляется с конвертером Excel. Excel — довольно распространенная цель для определенных типов компонентов, особенно в приобретенных пакетах, но я не уверен, что это приемлемо для вашего проекта.
person Marshall Fryman    schedule 14.05.2009
comment
Большое спасибо, Excel как объект автоматизации OLE помог. - person Dave Albert; 15.05.2009

Я бы рассмотрел возможность использования формата office open xml. Его также довольно легко программировать, и он позволит вам максимально контролировать свой вывод. Хорошей ссылкой будет веб-сайт OpenXML Developer.

person skamradt    schedule 14.05.2009

Я бы не сохранял текст с разделителями табуляции с расширением файла xls - это кладж.

Я считаю, что сохранение табличных данных в формате с разделителями-запятыми работает хорошо, и часто использую это решение по следующим причинам:

  • Если Excel установлен, расширение файла .csv обычно ассоциируется, поэтому двойной щелчок работает без «подделки» расширения файла.
  • Если Excel не установлен или не связан с .csv, у пользователя может быть другая программа, связанная с расширением .csv, и это решение все равно будет работать.
person Argalatyr    schedule 14.05.2009
comment
Я определенно согласен НЕ использовать поддельное расширение файла. - person Hemant; 15.05.2009
comment
Я не согласен, но это кладезь кладжи (я аналитик клинических приложений, а не разработчик), спасибо всем за участие. - person Dave Albert; 15.05.2009

Взгляните на компонент XLSReadWrite (http://www.axolot.com/components/xlsrwii20.htm). Он предоставляет API, с помощью которого вы можете сохранять напрямую в файлы xls без необходимости установки Excel или каких-либо внешних зависимостей.

person ajob    schedule 15.05.2009