Delphi word таблица выравнивание

 
Mishenka
 
(2006-10-27 10:06)
[0]

Добавил таблицу в документ ворд. С вертикальным выравниванием проблем нет, просто указываю Table.Cell(1, 1).VerticalAlignment := 1, а вот если указать HorizontalAlignment, то пишет, что таклго метода нету.
Как в ячейке указать горизонтальное выравнивание?


 
Anatoly Podgoretsky ©
 
(2006-10-27 10:12)
[1]

Скопировано из рабочей программы HorizontalAlignment


 
Mishenka
 
(2006-10-27 10:19)
[2]

Указываю Table.Cell(1, 1).HorizontalAlignment := 1;
пишет Method «HorizontalAlignment» not supported by automation object


 
Anatoly Podgoretsky ©
 
(2006-10-27 10:22)
[3]

Тут сразу возникает много вопросов
1. что такое Table
2. что такое Cell у него и есть ли у этого Cell такое свойство


 
Mishenka
 
(2006-10-27 10:57)
[4]


procedure TForm1.Button1Click(Sender: TObject);
var W, Table, Range, Cell: variant;
begin
 W := CreateOleObject("Word.Application");
 W.Documents.Add;
 W.ActiveDocument.Range.Font.Size := 14;
 Table := W.ActiveDocument.Tables.Add(Range := W.ActiveDocument.Range,
   NumRows := 1, NumColumns := 5);
 Table.Cell(1, 1).VerticalAlignment := 1;
 Table.Cell(1, 1).HorizontalAlignment := 1;


> 2. что такое Cell у него и есть ли у этого Cell такое свойство

Ну видимо такого свойства нету. Но что тогда делать?


 
umbra ©
 
(2006-10-27 11:32)
[5]

а макрос не судьба записать и посмотреть?
Table.Cell(1, 1).Cell.Range.ParagraphFormat.Alignment := wdAlignParagraphCenter;


Здравствуйте, dimenix, Вы писали:

D>Delphi3, работаю через OLE c Word’ом


D>Мне необходимо задать таблице стиль — без стиля.

D>Как сделать выравнивание текста в ячейке по центру, делаю так:

D>Area.SelectCell;

D>Word.Selection.ParagraphFormat:=wdAlignParagraphCenter;

D>не помогает.

Можно попробывать записать макрос. Тогда будет видно как это делает сам Word, а затем написать это у себя в приложении.

Delphi3, работаю через OLE c Word’ом

Мне необходимо задать таблице стиль — без стиля.
Как сделать выравнивание текста в ячейке по центру, делаю так:

Area.SelectCell;
Word.Selection.ParagraphFormat:=wdAlignParagraphCenter;

не помогает.

B>Можно попробывать записать макрос. Тогда будет видно как это делает сам Word, а затем написать это у себя в приложении.

так вот я так делаю, снала пишу в ворде макрос, смотрю команды, а потом в делфи делаю тоже самое. практически всё получается, за исключением именного этого.

я где-то видел такую вещь, как WordFormatParagraph1 — как компонента TWordFormatParagraph, с использованием ConnectTo — но это я так понимаю для Delphi 6ой версии, где есть компонента MS Word’a

Здравствуйте, dimenix, Вы писали:

D>я где-то видел такую вещь, как WordFormatParagraph1 — как компонента TWordFormatParagraph, с использованием ConnectTo — но это я так понимаю для Delphi 6ой версии, где есть компонента MS Word’a

А для какой версии надо?

От D5 до D7 есть в поставке модули работы с офисом. В D5 помогает меню Component — Install packages…

… << RSDN@Home 1.1 alpha 1 >>

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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
const
  wdAlignParagraphCenter = 1;
  wdAlignParagraphLeft = 0;
  wdAlignParagraphRight = 2;
  wdLineStyleSingle = 1;
var
  wdApp, wdDoc, wdRng, wdTable : Variant;
  i, j, Res : Integer;
  D : TDateTime;
  Bm : TBookMark;
  Sd : TSaveDialog;
begin
  Sd := SaveDialog; //SaveDialog1 уже должен быть на форме.
  //Если начальная папка диалога не задана, то в качестве начальной берём ту папку,
  //в которой расположен исполняемый файл нашей программы.
  if Sd.InitialDir = '' then Sd.InitialDir := ExtractFilePath( ParamStr(0) );
  //Запуск диалога сохранения файла.
  if not Sd.Execute then Exit;
  //Если файл с заданным именем существует, то запускаем диалог с пользователем.
  if FileExists(Sd.FileName) then begin
    Res := MessageBox(0, 'Файл с заданным именем уже существует. Перезаписать?'
      ,'Внимание!', MB_YESNO + MB_ICONQUESTION + MB_APPLMODAL);
    if Res <> IDYES then Exit;
  end;
 
  //Попытка запустить MS Word.
  try
    wdApp := CreateOleObject('Word.Application');
  except
    MessageBox(0, 'Не удалось запустить MS Word. Действие отменено.'
      ,'Внимание!', MB_OK + MB_ICONERROR + MB_APPLMODAL);
    Exit;
  end;
 
  //Делаем видимым окно MS Word. На постоянной основе или на время отладки.
  wdApp.Visible := True;
  wdapp.Activate;
  //Создаём новый документ.
  wdDoc := wdApp.Documents.Add;
  //На случай, если очень много данных и wdApp.Visible := True - тогда
  //для ускорения работы отключаем перерисовку окна MS Word.
  wdApp.ScreenUpdating := False;
  try
    wdRng := wdDoc.Content; //Диапазон, охватывающий всё содержимое документа.
 
    //Параграф 1. Заголовок отчёта.
 
    //Заголовок отчёта и перевод строки.
        wdRng.Start := wdRng.End;
    wdRng.InsertAfter('Отчёт'#13#10);
    //Выравнивание по центру.
    wdRng.ParagraphFormat.Alignment := wdAlignParagraphCenter;
    //Параметры шрифта.
    wdRng.Font.Name := 'Times New Roman';
    wdRng.Font.Bold := True;
    wdRng.Font.Size := 14;
 
 
    //Параграф 2. Общие сведения.
 
    //Формируем диапазон нового параграфа непосредственно за текущим диапазоном.
    wdRng.Start := wdRng.End;
    wdRng.InsertAfter(#13#10);
    wdRng.InsertAfter(Label1.Caption);
    //Сброс параметров параграфа.
    wdRng.ParagraphFormat.Reset;
    //Выравнивание по левому краю.
    wdRng.ParagraphFormat.Alignment := wdAlignParagraphLeft;
    //Отступ слева на 2 сантиметра. Размер отступа задаётся в типографских
    //единицах - в пунктах. 1 пункт = 0.035 сантиметра.
    //При записи в поле LeftIndent, отступ отсчитывается от левого поля на странице.
    //wdRng.ParagraphFormat.LeftIndent := 2 / 0.035;
    //Параметры шрифта.
    wdRng.Font.Reset; //Сброс параметров шрифта.
    wdRng.Font.Size := 12;
    wdRng.Font.Bold := True;
 
    //Параграф 3. Заголовок таблицы.
 
    wdRng.Start := wdRng.End;
    wdRng.InsertAfter(#13#10);
    wdRng.InsertAfter('Таблица1. Данные'#13#10);
    wdRng.ParagraphFormat.Reset;
    wdRng.Font.Reset;
    wdRng.Font.Size := 12;
    wdRng.Font.Bold := False;
 
    //Параграф 4. Таблица.
 
    wdRng.Start := wdRng.End;
    //Добавляем таблицу MS Word. Пока создаём таблицу с двумя строками.
 
    wdTable := wdDoc.Tables.Add(wdRng.Characters.Last, 2,   ValueListEditor1.ColCount );
    //Параметры линий таблицы.
    wdTable.Borders.InsideLineStyle := wdLineStyleSingle;
    wdTable.Borders.OutsideLineStyle := wdLineStyleSingle;
    //Сброс параметров параграфа.
    wdRng.ParagraphFormat.Reset;
    //Выравнивание всей таблицы - по левому краю.
    wdRng.ParagraphFormat.Alignment := wdAlignParagraphLeft;
    //Оформление шапки.
    wdRng := wdTable.Rows.Item(1).Range; //Диапазон первой строки.
    wdRng.ParagraphFormat.Alignment := wdAlignParagraphCenter;
    wdRng.Font.Size := 10;
    wdRng.Font.Bold := True;
    //Оформление первой строки данных - это вторая строка в таблице.
    //При добавлении следующих строк, их оформление будет копироваться с этой строки.
    wdRng := wdTable.Rows.Item(2).Range; //Диапазон второй строки.
    wdRng.ParagraphFormat.Alignment := wdAlignParagraphLeft;
    wdRng.Font.Size := 10;
    wdRng.Font.Bold := False;
 
    //Записываем шапку таблицы.
     wdTable.Cell(1, 1).Range.Text := 'Название';
     wdTable.Cell(1, 2).Range.Text := 'кол-во';
    //Записываем данные таблицы.
    for i := 0 to ValueListEditor1.RowCount -1  do
    begin
      if i > 1 then wdTable.Rows.Add;
      wdTable.Cell(i+2, 1).Range.Text := Grid.Cells[0,i];
      wdTable.Cell(i+2, 2).Range.Text := Grid.Cells[1,i];
    end;
 
     wdRng.Start := wdRng.End;
    wdRng.InsertAfter(#13#10);
    wdRng.InsertAfter(memo1.text);
    wdRng.ParagraphFormat.Reset;
    wdRng.Font.Reset;
    wdRng.Font.Size := 12;
    wdRng.Font.Bold := False;
 
     wdRng.Start := wdRng.End;
 
    //Выравнивание по центру.
    wdRng.ParagraphFormat.Alignment := wdAlignParagraphLeft;
    //Параметры шрифта.
    wdRng.Font.Name := 'Times New Roman';
    wdRng.Font.Bold := True;
    wdRng.Font.Size := 14;
 
    D := Now;
    wdRng.InsertAfter('Дата: ' + FormatDateTime('dd.mm.yyyy', D) + #13#10);
    wdRng.InsertAfter('Время: ' + FormatDateTime('hh:nn:ss:zzz', D) + #13#10);
  finally
    //Включение перерисовки окна MS Word. В случае, если wdApp.Visible := True.
    wdApp.ScreenUpdating := True;
  end;

На одном из проектов столкнулась с ситуацией, когда построение отчета, в котором заполняются таблицы, занимало слишком много времен. Проанализировав код расчета отчета, поняла, что очень много времени тратится на заполнение таблиц с помощью функции
ListMergeTableWord, таким образом, я попыталась исключить использование данной функции в расчете. Решением данной ситуации было внесение данных в таблицы Excel, а затем вставка заполненных таблиц Excel в документ отчета и дальнейшем форматированием
документа с помощью IS-Builder, таким образом, удалось сократить время построения отчета в несколько раз. Это скорее не единичный случай использования объектной модели MS Office для решения задач для генерации документов, а постоянно выполняемая задача.

Например, в рамках другого проекта была поставлена одна из задач: формировать версии документов без возможности их редактирования. Для решения данной задачи был выбран вариант преобразования документов в формате docxls в формат pdf, хотя, возможен и другой
формат, в который возможно преобразование документа в MS Office. Существует 2 способа преобразования документа: 1) с помощью службы преобразования; 2) с помощью объектной модели MS Office (с 2007 версии). Мною был выбран 2 способ так, как исключается промежуточное
звено (служба преобразования), соответственно уменьшается нагрузка на сервер, увеличивается скорость преобразования и нет необходимости настраивать службу. Ниже будет приведен способ преобразования документа формата doc в формат pdf (35-й пункт).

В данной статье хотелось описать наиболее востребованные способы форматирования документа в формате doc с помощью

IS
Builder.

Word = CreateObject("Word.Application") 
Doc = Word.Documents.Open(Path)

где Path - путь к документу, с которым работаете.
  1. Установка единицы измерения размера таблицы
Doc.Tables(1).PreferredWidthType = 2

Единица измерения

Константа в Word

Значение в ISBL

Сантиметры

wdPreferredWidthPoints

3

Проценты

wdPreferredWidthPercent

2

  1. Установка ширины таблицы
Doc.Tables(1).PreferredWidth = 100 // ширина таблицы в процентах
Doc.Tables(1).PreferredWidth = Word.CentimetersToPoints(17.5) // ширина таблицы в сантиметрах
  1. Автоподбор размера ячейки таблицы
Doc.Tables(1).AutoFitBehavior(2)

Режим выравнивания

Константа в Word

Значение в ISBL

Фиксированная ширина

wdAutoFitFixed

0

По содержимому

wdAutoFitContent

1

По ширине окна

wdAutoFitWindow

2

  1. Установка высоты ячеек
Doc.Tables(1).Rows.HeightRule = HeightRule   // указывает на способ изменения высоты
Doc.Tables(1).Rows.Height = RowHeigh         // RowHeight указывает на новую высоту строки в пунктах.

Значение константы HeightRule

Способ изменения высоты

Константа в Word

Значение в ISBL

Размер, указанный в параметре RowHeigh, является точным

wdRowHeightAuto

2

Размер, указанный в параметре RowHeigh, является минимальным

wdRowHeightAtLeast

1

Автоматический подбор высоты строк (параметр RowHeigh игнорируется)

wdRowHeightExactly

0

  1. Установка интервала абзаца (перед и после) в таблице
Doc.Tables(1).Range.ParagraphFormat.SpaceBefore = 6  //интервал перед
Doc.Tables(1).Range.ParagraphFormat.SpaceAfter = 6   //интервал после

Единица измерения интервала пт.
  1. Установка интервалов перед и после абзаца
Doc.Paragraphs(1).Format.SpaceBefore = 12 // интервал перед
Doc.Paragraphs(1).Format.SpaceAfter = 12  // интервал после
  1. Межстрочный интервал
Doc.Paragraphs(1).Format.LineSpacingRule = 0.5 // одинарный интервал

1 – полуторный интервал и 1.5 – двойной интервал.
  1. Установка стиля таблицы
Doc.Tables(1).Style = ИмяСтиляТаблицы
  1. Установка отступа слева 
Doc.Tables(1).Rows.LeftIndent = 0
  1. Абзацный отступ (красная строка) абзаца
Doc.Paragraphs(1).Format.FirstLineIndent = Значение в пунктах

Для перевода сантиметров в пункты можно воспользоваться функцией
CentimetersToPoints, тогда абзацный отступ в 1,5 см можно задать следующим образом:

Doc.Paragraphs(1).Format.FirstLineIndent = Word.CentimetersToPoints(1.5)
  1. Установка левой и правой границ текста абзаца:
Doc.Paragraphs(1).Format.LeftIndent = 10    // отступ слева
Doc.Paragraphs(1).Format.RightIndent = 10   // отступ справа
  1. Установка значений полей ячеек по умолчанию
Doc.Tables(1).TopPadding = 0     // верхнее
Doc.Tables(1).BottomPadding = 0  // нижнее
Doc.Tables(1).LeftPadding = 0    // левое      
Doc.Tables(1).RightPadding = 0   // правое
  1. Выравнивание текста в таблице по горизонтали
Doc.Tables(1).Range.ParagraphFormat.Alignment = 3  // по ширине

Режим выравнивания

Константа в Word

Значение в ISBL

По левому краю

wdAlignParagraphLeft

0

По центру

wdAlignParagraphCenter

1

По правому краю

wdAlignParagraphRight

2

По ширине

wdAlignParagraphJustify

3

  1. Выравнивание текстового абзаца:
Doc.Paragraphs(1).Format.Alignment = 0  // выравнивание по левому краю

Значения констант выравнивания такие же как в предыдущем пункте.

  1. Выравнивание текста в ячейке по вертикали
Doc.Tables(1).Rows(НомерСтроки).Cells(НомерСтолбца).VerticalAlignment = 1

Режим выравнивания

Константа в Word

Значение в ISBL

По верхнему краю

wdCellAlignVerticalTop

0

По центру

wdCellAlignVerticalCenter

1

По нижнему краю

wdCellAlignVerticalBottom

3

  1. Установка размера шрифта таблицы
Doc.Tables(1).Range.Font.Size = 7
  1. Установка цвета текста в ячейке
Doc.Tables(1).Cell(НомерСтроки; НомерСтолбца).Range.Font.Color = 255 
  1. Выделение всего текста таблицы (жирным, курсивом, подчеркиванием)
Doc.Tables(1).Range.Font.Bold = True          // жирным
Doc.Tables(1).Range.Font.Italic = True        // курсивом
Doc.Tables(1).Range.Font.Underline  = True    // подчеркивание
  1. Установка цвета подчеркивания
Doc.Tables(1).Cell(НомерСтроки; НомерСтолбца).Range.Font.UnderlineColor = 255
  1. Установка темы шрифта таблицы
Doc.Tables(1).Range.Font.Name = "Arial"
  1. Объединение ячеек
// объединение первой и второй ячеек первой строки
Cell = Doc.Tables(1).Cell(1; 1)
Cell.Merge(Doc.Tables(1).Cell(1; 2))
  1. Вставка Excel таблицы
    в Word
SelectionWord = Doc.Paragraphs(Paragraph).Range
SelectionWord.PasteExcelTable(True; False; False)

 Paragraph
– номер параграфа, куда будет вставлена таблица из Excel.

  1. Разрыв связь
Doc.Fields.Unlink  
  1. Удаление абзаца
Doc.Paragraphs(Paragraph).Range.Delete

 Paragraph
– номер параграфа, который нужно удалить.

  1. Удаляем строку в таблице
Doc.Tables(1).Rows(НомерСтроки).Select
Doc.Tables(1).Rows(НомерСтроки).Delete
  1. Установка границ таблицы
Table = Doc.Tables(1)
Table.Borders(WdBorderType).LineStyle = 4

Расположение линии

Значение в Word

Константа в ISBL

Линия, обрамляющая диапазон сверху

wdBorderTop

-1

Линия, обрамляющая диапазон слева

wdBorderLeft

-2

Линия, обрамляющая диапазон снизу

wdBorderBottom

-3

Линия, обрамляющая диапазон справа

wdBorderRight

-4

Все горизонтальные линии внутри диапазона

wdBorderHorizontal

-5

Все вертикальные линии внутри диапазона

wdBorderVertical

-6

Линия по диагонали сверху – вниз

wdBorderDiagonalDown

-7

Линия по диагонали снизу – вверх

wdBorderDiagonalUp

-8

  1. Закрасить всю таблицу
    цветом
Doc.Tables(1).Shading.BackgroundPatternColor = 255 // заливка красным цветом
  1. Закрасить ячейку цветом
Cell = Doc.Tables(1).Cell(1; 1)
Cell.Shading.BackgroundPatternColor = -687800525 // заливка желтым цветом
  1. Установка ориентации страницы
Doc.Application.Selection.PageSetup.Orientation = 1 // альбомная
Doc.Application.Selection.PageSetup.Orientation = 0 // книжная
  1. Установка полей страницы
Word.Application.Selection.PageSetup.LeftMargin = Word.CentimetersToPoints(2)    // левое поле
Word.Application.Selection.PageSetup.RightMargin = Word.CentimetersToPoints(2)   // правое поле
Word.Application.Selection.PageSetup.TopMargin = Word.CentimetersToPoints(2)     // верхнее поле
Word.Application.Selection.PageSetup.BottomMargin = Word.CentimetersToPoints(2)  // нижнее поле 
  1. Добавление таблицы в документ
Doc.Tables.Add(Doc.Paragraphs(1).Range; 3; 5) // добавление таблицы из 5 столбцов и 3 строк в 1 абзац
  1. Добавление строки в таблицу
Doc.Tables(1).Rows.Add
  1. Добавление колонки в таблицу
Doc.Tables(1).Columns.Add
  1. Добавление текста в ячейку
Doc.Tables(1).Cell(1;3).Range.Text = 'Текст, который добавляется в ячейку'
  1. Сохранение документа в pdf формат
Doc.ExportAsFixedFormat(Path; 17; openAfterExport; CreateBookmarks) 

где

  • Path — полный путь и имя нового файла формата PDF;
  • 17 — значение Microsoft.Office.Interop.Word.WdExportFormat, указывающие, что сохранять документ в формате PDF;
  • openAfterExport — Значение True используется, чтобы автоматически открыть новый файл; в противном случае используется значение False.
  • CreateBookmarks — значение указывает, следует ли экспортировать закладки и тип закладки. Значение константы WdExportCreateBookmarks:
    • wdExportCreateHeadingBookmarks = 1 — Создание закладки в экспортируемом документе для всех заголовком, которые включают только заголовки внутри основного документа и текстовые поля не в пределах колонтитулов, концевых сносок, сносок или комментариев.
    • wdExportCreateNoBookmarks = 0 — Не создавать закладки в экспортируемом документе.
    • wdExportCreateWordBookmarks = 2 — Создание закладки в экспортируемом документе для каждой закладки, которая включает все закладки кроме тех, которые содержатся в верхнем и нижнем колонтитулах.

P.S.: Аналогичная статья для Excel
Несколько способов форматирования и обработки данных в Excel документах с помощью IS-Builder.

Delphi
это один из самых популярных и эффективных инструментов разработки сложных
приложений и возможность интегрировать средства приложений
MS Office в разрабатываемые в этой среде проекты.

Известно, что Word и Excel является OLE – объектом. Суть OLE технологии возможность из разрабатываемого
приложения (клиента) взаимодействовать с другими приложениями (серверами). Все
приложения
Microsoft Office являются так называемыми «серверами
автоматизации».
Microsoft Word, являясь сервером OLE, позволяет
подключаться к себе клиентам и использовать свои методы и свойства.

Работа с MS Word в Borland Delphi. Для
работы с
Word
файлами нам потребуется библиотека
ComObj, которая входит в стандартную поставку Borland Delphi. Подключается она в разделе Uses.

Для начала нужно подключиться
к
Word серверу, другими
словами ещё называют инициализацией. Это
происходит следующим образом:

Var

Application: Variant

Begin

Application:=createOLEObject(‘Word.Application’) ;

End;

Сначала вводим
вариантную переменную, затем создаем объект
OLE Word.Application, и присваиваем его этой
переменной. Эта процедура называется «создание экземпляра сервера».
Создав этот объект, мы затем программируем его свойства и методы.

После создания
экземпляра сервера, нужно либо создать новый документ, либо открыть уже
имеющийся.

Создание нового
документа.
Создание документа
производится методом
Add. Синтаксис метода:

Add
(
Template, NewTemplate, DocumentType, Visible);

Все параметры метода – типа Variant необязательны.

Template

Имя шаблона, по которому создается новый документ.
Если значение не указано, то используется шаблон 
Normal.

NewTemplate

Если использовать значение True, то новый документ открывается как шаблон. Значение
по умолчанию –
False.

DocumentType

Может принимать одно из следующих значений констант
типа
WdNewDocumentType:wdNewBlankDocument (новый
чистый документ),
wdNewEmailMessage(электронное
сообщение) или
wdNewWebPage(Web – страница). Значение по умолчанию wdNewBlankDocument.

Visible

Управляет видимостью созданного документа. Если
указать значение
True, то документ
будет видим. По умолчанию
Microsoft Word открывает документ с свойством Visibleустановленным в True.

Так как все параметры являются
необязательными, то для создания нового документа по шаблону
Normal метод можно применить без параметров:

Application.Documents.Add;

Открытие документа. Открытие существующего документа Word реализуется методом Open. Синтаксис метода:

Open (FileName,
ConfirmConversions, ReadOnly, AddToRecentFiles, PasswordDocument,
PasswordTemplate, Revert, WritePasswordDocument, WritePasswordTemplate, Format,
Encoding, Visible);

Кроме параметра FileName все остальные необязательны.

FileName

В параметре указывается имя файла
документа, включая путь. Обязательный параметр.

ConfirmConversions

Если в значении этого параметра
указать значение
True, то в
случае открытия документа с форматом, отличного от
Word, будет выводится диалоговое окно конвертирования
файла. Необязательный параметр.

ReadOnly

Указывая True, открываем документ только для чтения.
Необязательный параметр.

AddToRecentFiles

Устанавливая значение в True, позволяем добавлять имя открываемого файла в список
недавно открытых файлов в меню Файл. Необязательный
параметр.

PasswordDocument

Пароль открываемого документа.
Необязательный параметр.

PasswordTemplate

Пароль открываемого шаблона.
Необязательный параметр.

Revert

Параметр, предусмотренный для
открытия файла с именем, уже открытого в данный момент. Если указать
True то все изменения текущего документа не сохраняются и
открывается файл с подобным именем. При значении
False открытый файл активизируется, а
новый не открывается. Необязательный параметр.

WritePasswordDocument

Пароль для сохраняемого документа.
Необязательный параметр.

WritePasswordTemplate

Пароль для сохраняемого шаблона.
Необязательный параметр.

Format

Конвертор
файла, необходимый для открытия документа. Может принимать одно из следующих значений
типа:

WdOpenFormat:

wdOpenFormatAllWord,

wdOpenFormatAuto, wdOpenFormatDocument, wdOpenFormatEncodedText, wdOpenFormatRTF,

wdOpenFormatTemplate,

wdOpenFormatText, wdOpenFormatUnicodeText,

wdOpenFormatWebPages.

По умолчанию wdOpenFormatAuto. Необязательный
параметр.

Encoding

Кодировка для просмотра документа,
может принимать любое правильное значение из ряда констант
MsoEncoding. По умолчанию используется системная кодовая
станица, установленная по умолчанию. Необязательный параметр.

Visible

Устанавливая True, предусматриваем видимое открытие документа. По
умолчанию установлено
True.
Необязательный параметр.

Например, для открытия документа «c:1.doc» метод Open применяется как

Application.Documents.Open(‘c:/1.doc’);

Все элементы рассматриваемого OLE объекта являются так
называемыми коллекциями. Коллекция – это объект, содержащий
специфический набор методов и свойств. Коллекция похожа на динамический массив.
В ней содержится набор объектов, которые обычно имеют один тип. Вы можете
добавлять в нее элементы, удалять и получать их значения. Доступ к элементу
осуществляется либо по его порядковому номеру, либо по его имени. Например, все
открытые документы представляют собой коллекцию.

Обращение к документу. Обращение к открытому документу, как к элементу
набора коллекции, можно по порядковому номеру методом
Item. Например, обращение ко второму документу будет выглядеть как:

Application.Documents.Item(2);

Нумерация всех элементов
в коллекции начинается с единицы, а не с нуля. Аналогичную операцию можно
осуществить еще как:

Application.Documents(2);

Для работы с документом,
его сначала нужно активизировать, т.е. передать ему фокус, подготовить для
редактирования или других операций. Активизирование документа производится
методом Activate. Для активизации документа, его нужно выбрать из коллекции
по его порядковому номеру:

Application.Documents.Item(2).Activate; или по имени файла

Application.Document(‘c:1.doc’).Activate;

К активному документу
можно обращаться, используя свойство ActiveDocument, например, закрыть
активный документ:

Application.ActiveDocument.Close;

Вставка текста в
документ
. Далее по тексту мы в
основном будем манипулировать коллекций объектов
Range, т.е. весь текст удобно будет
рассматривать как несколько непрерывных областей. Добавление текста
осуществляется следующим образом: сначала создается объект
Range, представляющий собой непрерывную область
документа, затем методами этого объекта добавляется текст. Объект
Range может объявляться как:

выражение. Range (начало области,
конец области);

Например, объявленный ниже объект Range1 охватывает собой первые 10 символов
второго документа.

Var

Range1:variant;

Begin

Range1:=Application.Documents(2).Range(1,10);

End;

В документе сначала
можно создавать абзацы, т.е. объекты
Paragraphs, и затем объединять их
в области. К примеру, в начале активного документа методом
Add объекта Paragraphs создаем новый абзац, затем на его основе создаем
объект
Range1:

Var

Range1:variant;

Begin

Application.ActiveDocument.Paragraphs.Add;

Range1:=Application.ActiveDocument.Paragraphs.Item(1).Range;

End;

Вставка текста производится
двумя методами объекта
Range: InsertAfter и InsertBefore. Синтаксис методов:

выражение. InsertAfter(текст);

Этим методом
производится вставка текста после начала объекта
Range выражение. InsertBefore(текст), а этим –   до.

При использовании этих
методов, в качестве параметра указать нужно только текст в апострофах. К
примеру, вызов двух операторов даст нам две строки: это вставленный текст
InsertBefore и это текст InsertAfter:

Range1.InsertAfter(это текст InsertAfter ‘);

Range1.InsertBefore(‘это вставленный текст InsertBefore‘);

У объекта Range есть много полезных свойств. Например:

Свойство Font (шрифт), которое имеет свои подсвойства:

Font.Bold:=True –   жирность шрифта

Font.Name:=»Arial» – название
шрифта

Font.Size:= 24 –  размер шрифта

Font.Color:= clRed –   цвет
шрифта

Font.Italic:= True –   наклонность шрифта

Например, вставка жирной строки зеленого цвета:

Range1.Font.Bold:=True;

Range1.Font.Size:=14;

Range1.Font.Color:=clGreen;

Range1.InsertAfter(вставленная строка‘);

Объект типа Range можно форматировать. Например, следующей строкой содержимое
объекта
Range выравнивается по центру:

Range1.ParagraphFormat.Aligment:=wdAlignParagrapfCenter;

Работа с Excel
файлами в Delphi. Для работы с Excel файлами в Delphi так же нужно подключить модуль ComObj в разделе Uses.

Для
начала нужно подключиться к
Excel серверу, другими словами ещё называют инициализацией. Это происходит следующим
образом:

var

Excel: Variant;

Excel := CreateOleObject(‘Excel.Application‘);

Сначала вводим
вариантную переменную, затем создаем объект
OLE Excel.Application, и присваиваем его этой
переменной. Эта процедура называется «создание экземпляра сервера».
Создав этот объект, мы затем программируем его свойства и методы.

После создания экземпляра сервера, нужно либо создать новую книгу, либо
открыть уже имеющуюся.

Создание новой книги:

Excel.Workbooks.Add;

Открытие существующей книги (где путь – путь к файлу с расширением xls.):

Excel.Workbooks.Open[путь]; //(Excel.Workbooks.Open(‘c:2.xls‘));

Открытие существующей книги только для чтения:

Excel.Workbooks.Open[путь, 0,
True];

Excel.Workbooks.Open(‘c:2.xls’,0,true);

Закрытие Excel:

Excel.ActiveWorkbook.Close;

Excel.Application.Quit;

Отображаем или скрываем Excel на экране:

Excel.Visible := True;

Excel.Visible := False;

Печать содержимого активного листа Excel:

Excel.ActiveSheet.PrintOut;

Чтение/запись данных
в
Excel.
Доступ к ячейке в текущей книге Excel можно осуществить следующим
образом:

// запись значения в
ячейку

Excel.Range[‘A2′]:=’Привет!’;

// чтение значения
из ячейки

s:=Excel.Range[‘A2’];
где A2 – адрес ячейки.

Или
используя стиль ссылок R1C1:

Excel.Range[excel.Cells[2, 2]]:=’Привет!’; где [2, 2] – координата
ячейки.

Вообще,
ячейке Excel можно присваивать любое значение (символьное, целое, дробное,
дата) при этом Excel установит форматирование в ячейке применяемое по
умолчанию.

Формат ячеек в Excel. Выделить (выбрать) группу ячеек для последующей работы можно так:

Excel.Range[Excel.Cells[1,
1],Excel.Cells[5, 3]].Select;
либо

Excel.Range[‘A1:C5’].Select;

При этом
будет выделена область находящаяся между ячейкой A1 и C5.

После выполнения
выделения можно установить:

1) Объединение ячеек:

Excel.Selection.MergeCells:=True;

2) Перенос по
словам:

Excel.Selection.WrapText:=True;

3) Горизонтальное
выравнивание:

Excel.Selection.HorizontalAlignment:=3;

при
присваивании значения 1 используется выравнивание по умолчанию,

при 2 –
выравнивание слева,3 – по центру, 4 – справа.

4) Вертикальное
выравнивание

Excel.Selection.VerticalAlignment:=1;

присваиваемые
значения аналогичны горизонтальному выравниванию.

5) Граница
для ячеек:

Excel.Selection.Borders.LineStyle:=1;

При
значении 1 границы ячеек рисуются тонкими сплошными линиями. Кроме этого можно
указать значения для свойства Borders, например, равное 3. Тогда установится
только верхняя граница для блока выделения:

Excel.Selection.Borders[3].LineStyle:=1;

Значение свойства Borders задает различную комбинацию граней ячеек.В
обоих случаях можно использовать значения в диапазоне от 1 до 10.

Понравилась статья? Поделить с друзьями:
  • Delphi word таблица в таблице
  • Delphi word сохранить как
  • Delphi word создание таблицы
  • Delphi word поиск слова на
  • Delphi word открыт или нет