Таблица в MS Word

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Таблица в MS Word

Сообщение Dimqin » 11.10.2019 12:48:47

Строю в Ворде многостраничную спецификацию. Для полного счастья никак не перепрыгнуть через три задачи:
1. Нужно в нижнем колонтитуле создать одну таблицу на первом листе и другую для всех остальных. Как работать с колонтитулами в Лазарусе?
2. Как задать воспроизведение строки с заголовками таблицы на последующих страницах?
3. Для размещения записей в ячейках мне надо подгонять размер шрифта. Как узнать размер текста, который будет внесен в ячейку? Как задать отступы от рамки?
Люди добрые, помогите, кто чем может...
Последний раз редактировалось Dimqin 17.10.2019 09:46:42, всего редактировалось 1 раз.
Dimqin
незнакомец
 
Сообщения: 4
Зарегистрирован: 11.10.2019 11:36:09

Re: Таблица в MS Word

Сообщение Dimqin » 14.10.2019 12:19:43

С колонтитулами разобрался:
Word.ActiveDocument.Sections.Item(1).Headers.Item(1).range.Text:=widestring(Utf8ToAnsi('Верхний колонтитул'));
Word.ActiveDocument.Sections.Item(1).Footers.Item(1).Range.Text := widestring(Utf8ToAnsi('Нижний колонтитул'));
Ключевые слова Headers и Footers
Dimqin
незнакомец
 
Сообщения: 4
Зарегистрирован: 11.10.2019 11:36:09

Re: Таблица в MS Word

Сообщение Dimqin » 23.10.2019 17:37:04

Всплыла проблемка: читаю из таблицы Excel данные, закрываю приложение. Открываю приложение Word, пытаюсь открыть файл, вываливаюсь в окно ассемблера на строку
774E8E3D eb07 jmp 0x774e8e46 <ntdll!RtlIsNonEmptyDirectoryReparsePointAllowed+118>
Текст проги:
Код: Выделить всё
Od := OpenDialog1;
  Od.InitialDir := ExtractFileName(ParamStr(0));
  if not Od.Execute then Exit;
  if not FileExists(Od.FileName) then Exit;
  try
    exApp := CreateOleObject('Excel.Application');
  except
    ShowMessage('Не удалось запустить MS Excel. Действие отменено.');
    Exit;
  end;
  lblFileName.Visible:=false;
  bttnGoOn.Visible:=true;
  //Делаем видимым окно MS Excel. На время отладки.
  exApp.Visible := false;//True;
  //Открываем рабочую книгу.
  FileName:=Od.FileName;
  //ExtractFilePath(Application.ExeName) + 'имя_файла. pdf')
  exBook := exApp.WorkBooks.Open(WideString(FileName));
  //Получаем ссылку на первый лист рабочей книги.
  exSh := exBook.Worksheets[1];
  maxHor:=1;
  //maxHor:=exSh.GetColCount;
  //Чтение заголовков  **************
  addrDesignator:= -1; addrValue:= -1; addrComment:= -1;
  addrTU:= -1;         addrPlant:= -1;
  maxHor:=1;
  repeat
    Des:='';
    Des:=trim(String(exSh.Cells[1, maxHor].Text));
    if Des='' then break;
    i:= maxHor;
    if Des='Designator' then addrDesignator:= i
      else if Des='Value' then addrValue:= i
        else if Des='Comment' then addrComment:= i
          else if Des='TU' then addrTU:= i
            else if Des='Изготовитель' then addrPlant:= i;
    lbxDes.Items.Add('Title:'+ Des+'  N='+intToStr(i));
    setLength(ColNames,maxHor);
    ColNames[maxHor-1]:= Des;
    inc(maxHor);
    until Des='';
......................
.....................
  exApp.Quit;


Запускаю через OLE Word.
Код: Выделить всё
     fname:=extractfilepath(Application.ExeName)+'TMP_PE.doc';
  if FileExists(fname) then deletefile(fname);
    CopyFile(extractfilepath(Application.ExeName)+'PE.doc',fname);
    //try
  ShowMessage('Создан файл: '+fname);

    WRDapp:=CreateOLEObject('Word.Application');//создаём новое приложение
     WRDapp.Documents.Open(FileName:=fname);

На последней строке вылетаю. Что не так? По отдельности все работает.

Добавлено спустя 17 часов 45 минут 13 секунд:
Нашел. Надо
Код: Выделить всё
    WRDapp:=CreateOLEObject('Word.Application');//создаём новое приложение
     WRDapp.Documents.Open(FileName:=WideString(fname));
Dimqin
незнакомец
 
Сообщения: 4
Зарегистрирован: 11.10.2019 11:36:09


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 31

Рейтинг@Mail.ru