#delphi #automation #delphi-7 #openoffice.org #openoffice-calc
#delphi #автоматизация #delphi-7 #openoffice.org #openoffice-calc
Вопрос:
Я использую Delphi 7 и хотел бы экспортировать содержимое списка из моей программы в OpenOffice Calc с помощью автоматизации, вместо использования файлов.
Задача проста: создать новый документ, выполнить итерацию по строкам / столбцам и изменить данные ячейки.
Я нашел некоторый код, но он неполный, и я надеялся, что у кого-нибудь есть готовый пример кода для выполнения этой очень простой задачи. Это могло бы сэкономить мне несколько часов попыток.
Заранее спасибо!
Редактировать: Я хотел бы автоматизировать OpenOffice Calc для достижения того, что я написал выше. Спасибо!
Комментарии:
1. OpenOffice Calc поддерживает импорт данных в нескольких форматах (HTML, с разделителями табуляции, CSV и т.д.). В чем конкретно заключается ваш вопрос — как создать файл импорта данных из Delphi, или как импортировать эти данные в Calc, или как автоматизировать Calc и программно создать электронную таблицу?
2. Как автоматизировать Calc и программно создать spreasheet
3. @steve проблема с вопросом в том, что вы не сказали нам, чего вы хотите.
4. Стив, я помог тебе задать твой вопрос. Надеюсь, вам нравится, как я четко сформулировал вопрос вверху, а не внизу.
5. Имейте в виду, что автоматизация OOo 3.3 COM полностью нарушена, вместо этого используйте OOo 3.2. Смотрите openoffice.org/bugzilla/show_bug.cgi?id=117010
Ответ №1:
Самое простое решение — записать выходные данные в CSV-файл и открыть его в OpenOffice.
Существуют также библиотеки для записи файлов .XLS, которые могут читать как OpenOffice Calc, так и Excel. CSV настолько прост, что я удивляюсь, что вам нужен пример. Создайте TStringList и добавьте в него строки в формате, разделенном запятыми. Сохранить в файл.
Так называемый «программный» метод предполагает автоматизацию OLE.
uses
OleAuto;
var
mgr,calc,sheets,sheet1,dt,args:Variant;
begin
args = VarArrayCreate(...);
mgr := CreateOleObject('com.sun.star.ServiceManager');
dt := mgr.createInstance('com.sun.star.frame.Desktop')
calc = dt.loadComponentFromURL('private:factory/scalc', '_blank', 0, args)
sheets = calc.getSheets()
sheet1 = sheets.getByIndex(0)
...
Комментарии:
1. Спасибо, но я бы просто хотел экспортировать его без сохранения. Моя программа делает то же самое с Excel, и для обеспечения согласованности я хотел бы сделать то же самое с OO. Сохраняет пользователь лист или нет — это его / ее выбор.
2. Это намного больше работы. Для чего? Создайте временную папку, запустите программу, позже удалите временный файл. Я не знаю о поддержке OO для OLE Automation, я знаю, как это сделать с MS Excel, но не с OOCalc.
Ответ №2:
Open Office поддерживает автоматизацию
смотрите: http://udk.openoffice.org/common/man/tutorial/office_automation.html
Информацию об Open Office для Delphi можно найти на:
http://development.openoffice.org/#OLE
Сайт ooomacros.org похоже, что не работает, к счастью, на машине wayback все еще есть копия:
http://replay.web.archive.org/20090608051118/http://www.ooomacros.org/dev.php
Удачи.