powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Cохранить содержимое StringGrid-а в документ OpenOffice Writer через диалог
3 сообщений из 3, страница 1 из 1
Cохранить содержимое StringGrid-а в документ OpenOffice Writer через диалог
    #40060101
GAZot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте уважаемые форумчане! Мне надо в Lazarus-е сохранить содержимое StringGrid-а в документ OpenOffice Writer через диалог. Вот попробовал написать код, но вопросы остались
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
TfMain.miSaveToOOWriterClick(Sender: TObject);
var
  r, c: Integer;
  fn: string;
  s : string;
begin
  if SaveDialog.InitialDir = '' then
    SaveDialog.InitialDir := ExtractFilePath(ParamStr(0));
  if SaveDialog.Execute then
    fn := SaveDialog.FileName
  else
    exit; 
  if VarIsEmpty(ServiceManager) then
    try
      ServiceManager := CreateOleObject('com.sun.star.ServiceManager');
    except
      raise Exception.Create('Couldn''t get ServiceManager');
      Exit;
    end;
  CoreReflection :=
    ServiceManager.createInstance('com.sun.star.reflection.CoreReflection');
  CoreReflection.forName('com.sun.star.beans.PropertyValue').createObject(PropertyValue);
  VA := VarArrayCreate([0, 0], varVariant);
  VA[0] := PropertyValue;
  StarDesktop := ServiceManager.CreateInstance('com.sun.star.frame.Desktop');
  Document := StarDesktop.LoadComponentFromURL('private:factory/swriter',
    '_blank', 0, VA);
  if (VarIsNull(Document) or VarIsEmpty(Document)) then
  begin
    raise Exception.Create('Couldn''t create document');
    Exit;
  end;
  objText := Document.getText;
  objCursor := objText.createTextCursor;
  objCursor.SetPropertyValue('CharFontName', 'Arial Black'); //шрифт
  objCursor.SetPropertyValue('CharHeight', 16); //размер
  objCursor.SetPropertyValue('CharWeight',200);     //жирный
  objCursor.SetPropertyValue('CharUnderline', 1); //подчеркнутый
  {для ParaAjust параметр Align=0(left), =1(Right), =2(block, по краям), =3(центр)}
  // objCursor.SetPropertyValue('ParaAjust', 3);
  s := 'Здесь будет название таблицы'; //название таблицы
  objText.insertString(objCursor, WideString(s), false);
  objText.insertControlCharacter(objCursor, 1, false);//Пропуск строки
  Table := Document.createInstance('com.sun.star.text.TextTable');//Вставка таблицы
  Table.Initialize(sgTable.RowCount, sgTable.ColCount); //row, column
  Table.HoriOrient := 0;
  Table.LeftMargin := 500; // 2* 1/100 mm;
  Table.RightMargin := 200;
  Document.getText.insertTextContent(objCursor, Table, false);
  for r := 0 to Pred(sgTable.RowCount) do
  begin
    for c := 0 to Pred(sgTable.ColCount) do
    begin
      cell := table.getCellByName(WideString(Format('%s%d', [Chr(Ord('A') + C),
        R + 1])));
      cell.getText.createTextCursor.CharFontName := 'Arial';
      cell.getText.createTextCursor.CharHeight := 14; //
  //   cell.getText.createTextCursor.CharWeigth := 200; //
      cell.getText.createTextCursor.CharPosture := 1;
  //    cell.getText.createTextCursor.ParaAjust := 3;
      cell.SetString(WideString(sgTable.Cells[C, R]));
    end;
  end;

  //Вот здесь хочу всё сохранить, но не знаю как 

  Document.Close(True);
  Document  := Unassigned;
  StarDesktop := Unassigned;
  ServiceManager := Unassigned;  
end;          

[/SRC]
1. Как всё сохранить не показывая самого документа
2. Если StringGrid цветной есть ли возможность перенести и цвета ячейки
...
Рейтинг: 0 / 0
Cохранить содержимое StringGrid-а в документ OpenOffice Writer через диалог
    #40060112
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GAZot
Как всё сохранить не показывая самого документа

Найти либу, которая реаилзует dom для odt на паскале с форматированием и всеми делами.

https://github.com/dgaspary/fpOdf

Это типа оно, но не ручаюсь за её состояние.
...
Рейтинг: 0 / 0
Cохранить содержимое StringGrid-а в документ OpenOffice Writer через диалог
    #40060153
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GAZot,

или вот тоже топик был, там автор довольно проработанную библиотеку разработал, можно посмотреть реализацию отдельных фич если не хотите всю: Delphi & OpenOffice - Заполним пробел и генерация TLB здесь 9057936
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Cохранить содержимое StringGrid-а в документ OpenOffice Writer через диалог
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]