Строю в Ворде многостраничную спецификацию. Для полного счастья никак не перепрыгнуть через три задачи:
1. Нужно в нижнем колонтитуле создать одну таблицу на первом листе и другую для всех остальных. Как работать с колонтитулами в Лазарусе?
2. Как задать воспроизведение строки с заголовками таблицы на последующих страницах?
3. Для размещения записей в ячейках мне надо подгонять размер шрифта. Как узнать размер текста, который будет внесен в ячейку? Как задать отступы от рамки?
Люди добрые, помогите, кто чем может...
Таблица в MS Word
Модератор: Модераторы
Таблица в MS Word
Последний раз редактировалось Dimqin 17.10.2019 08:46:42, всего редактировалось 1 раз.
С колонтитулами разобрался:
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
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
Всплыла проблемка: читаю из таблицы Excel данные, закрываю приложение. Открываю приложение Word, пытаюсь открыть файл, вываливаюсь в окно ассемблера на строку
774E8E3D eb07 jmp 0x774e8e46 <ntdll!RtlIsNonEmptyDirectoryReparsePointAllowed+118>
Текст проги:
Запускаю через OLE Word.
На последней строке вылетаю. Что не так? По отдельности все работает.
Добавлено спустя 17 часов 45 минут 13 секунд:
Нашел. Надо
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));