Команды delphi для word

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Сегодня, в последний рабочий день недели, практически весь день провозился над передачей данных из Delphi в Word. Так как подозрение есть, что работа продолжится то решил кое-какие моменты по работе с Microsoft Word в Delphi запечатлеть и у себя в блоге. Написать такую мини-шпаргалку (тем более, что по Excel уже кое что есть).

Для начала, немного общих моментов по работе с MS Office в Delphi. И первое, что мы сделаем — это создадим объект Word.Application. Создается этот объект абсолютно также, как и объект Excel.Application:

uses ComObj;
var Word: variant;
[...]
procedure CreateWord(const Visible: boolean);
begin
  Word:=CreateOleObject('Word.Application');
  Word.Visible:=Visible;
end;

Всё достаточно просто. Далее мы можем работать с объектом следующим образом:

  1. Создавать документ Word с нуля
  2. Открыть уже существующий документ и изменить в нем текст для получения необходимой формы документа.

Рассмотрим оба варианта, т.к. оба они имеют как свои плюсы, так и недостатки.

Чтобы создать новый документ необходимо выполнить метод Add у коллекции Documents, т.е.:

[...]
Word.Documents.Add
[...]

и после этой операции уже начинать работать с документам обращаясь к нему по индексу или имени в коллекции. Также, можно создать новый документ по шаблону (*.dot). Для этого необходимо выполнить тот же метод Add, но с одним входным параметром — путем к файлу-шаблону:

[...]
Word.Documents.Add(TamplatePath:string);
[...]

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

[...]
var List: TStringList;
    i: integer;
begin
  List:=TStringList.Create;
  for i:=1 to Word.Documents.Count do
    List.Add(Word.Documents.Item(i).Name);
end;
[...]

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

Word.Documents.Item(index).Activate

где index — номер документа в коллекции.

Теперь можно приступать к записи и чтению документа. Для работы с текстов в документе Word, как и в Excel для работы с ячейками таблицы, определен объект Range. Именно методы этого объекта и дают нам возможность работы с текстом. Для начала рассмотрим работу двух основных методов: InsertBefore и InsertAfter.

Как следует из название — первый метод вставляет текст в начало содержимого Range, а второй — в конец. При этом сам объект Range может содержать как весть документ (Document) так и какую-либо его часть. Например, в следующем листинге я вставлю строку в начало документа и затем методом InsertAfter буду добавлять несколько строк текста в конец документа:

[...]
Word.ActiveDocument.Range.InsertBefore('Hello World');
Word.ActiveDocument.Range.InsertAfter('текст после Hello World');
Word.ActiveDocument.Range.InsertAfter('окончание строки в документа');
[...]

При выполнении этих трех операции Range содержал весь документ.

Если работать со всем документом неудобно, а необходимо, например выделить фрагмент с 50 по 100 символ и работать с ним, то можно воспользоваться функцией Range, которая вернет нам необходимый объект Range:

var MyRange: variant;
begin
  MyRange:=WordActiveDocument.Range(50,100);
  MyRange.InsertBefore('Привет');//всё, что было после 50-го символа сдвинулось вправо
end;

Это что касается записи текста. Решение обратной задачи — чтения текста из документа ещё проще. Достаточно воспользоваться свойством Text у объекта Range:

[...]
ShowMessage(Word.ActiveDocument.Range.Text) //весь текст в документе
[...]

Также для чтения документа можно воспользоваться коллекцией документа Words (слова). За слово принимается непрерывный набор символов — цифр и букв, который оканчивается пробелом.

Перечисляются слова документа точно также как и при работе с коллекцией документов, т.е. первое слово имеет индекс 1 последнее — Word.Count.

[...]
  ShowMessage(Word.ActiveDocument.Words.Item(Word.ActiveDocument.Words.Count).Text)
[...]

В данном случае я вывел на экран последнее слово в документе.

Очевидно, что приведенный выше способ работы с документам хорош в случае, когда требуется создать относительно простой документ Word и не требуется лишний раз рассчитывать фрагменты текста, правильно вставлять таблицы и т.д. Если же необходимо работать с документами, которые имеют сложное содержание, например текст в перемежку с рисунками, таблицами, а сам текст выводится различными шрифтами, то, на мой взгляд наиболее удобно использовать второй способ работы с Word в Delphi — просто заменить текст в уже заранее заготовленном документа.

2. Работа с документами Word в Delphi. Открытие готового документа и замена текста.

Чтобы открыть заранее заготовленный документ Word в Delphi достаточно воспользоваться методом Open у коллекции Documents, например так:

var FilePath: string;
[...]
  Word.Documents.Open(FilePath)
[...]

Метод Open можно вызывать с несколькими аргументами:

  • FileName: string — путь и имя файла;
  • ConfirmConversions: boolean — False — не открывать диалоговое окно «Преобразование файла» при открытии файла, формат которого не соответствует формату Word (doc или docx)
  • ReadOnly:boolean — True — открыть документ в режиме «Только для чтения»
  • AddToRecentFiles: boolean — True, чтобы добавить документ в список недавно открытых документов.
  • PasswordDocument: string — пароль для открытия документа
  • PasswordTemplate: string — пароль для открытия шаблона
  • Revert : boolean — True, чтобы вернуться к сохраненному документу, если этот документ открывается повторно.
  • WritePasswordDocument: string — пароль для сохранения измененного документа в файле
  • WritePasswordTemplate:string — пароль для сохранения изменений в шаблоне
  • Format:integer — формат открываемого документа.

Обязательным параметром метода Open является только FileName, остальные — могут отсутствовать. Если же Вам необходимо воспользоваться несколькими параметрами, то их необходимо явно указывать при вызове метода, например:

[...]
  Word.Documents.Open(FileName:=FilePath, ReadOnly:=true)
[...]

В этом случае документ открывается в режиме «Только для чтения». При таком способе вызова (с явным указанием аргументов) положение аргументов может быть произвольным.

Что касается последнего аргумента — Format, то он может принимать  целочисленные значения (применительно к версиям Microsoft Word 2007 и выше) от 0 до 13. При этом, для того, чтобы открыть «родные» вордовские документы (doc) достаточно использовать значения 0 или 6.

Теперь, когда документ открыт его необходимо преобразовать. Обычно я делаю следующим образом: в тех местах документа, в которые необходимо вставить текст я расставляю либо закладки, либо простые строки текста, например, обрамленные символом $ или #. И затем просто выполняю поиск и замену подстрок следующим образом:

function FindAndReplace(const FindText,ReplaceText:string):boolean;
  const wdReplaceAll = 2;
begin
  Word.Selection.Find.MatchSoundsLike := False;
  Word.Selection.Find.MatchAllWordForms := False;
  Word.Selection.Find.MatchWholeWord := False;
  Word.Selection.Find.Format := False;
  Word.Selection.Find.Forward := True;
  Word.Selection.Find.ClearFormatting;
  Word.Selection.Find.Text:=FindText;
  Word.Selection.Find.Replacement.Text:=ReplaceText;
  FindAndReplace:=Word.Selection.Find.Execute(Replace:=wdReplaceAll);
end;

Приведенная выше функция позволяет провести поиск и замену текстового фрагмента во всём документе. Для того, чтобы ограничить возможности пользователя при работе с шаблоном документа я обычно ставлю на необработанный файл пароль, а после обработки — пароль снимаю и сохраняю документ с другим названием в необходимую директорию.

Вот, наверное, самые-самые простые методы работы с Word в Delphi. Кстати, пишу пост и, думаю, что у кого-то из читателей может возникнуть вопрос: причём тут Delphi в Internet и Word в Delphi? :) Честно говоря, приведенный выше фрагменты кода можно использовать для нужд в Internet с натяжкой, например, при автосоставлении небольших отчётов по чему-либо. А вообще, в недалеком будущем, есть в планах поразбираться с Тезаурусом Word и попробовать составить небольшой синонимайзер для собственных нужд — он-то и пригодится нам в Internet :)

3.1
8
голоса

Рейтинг статьи

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Techniques to control MS-Word from a Delphi application are discussed in this blog. As a demonstration, I have added different codes which allows to use Word to create tables, to format strings, to create paragraphs and to insert different objects like images, shapes, word arts etc. Finding a PC that does not have MS-Word installed may prove a difficult task: The word processor from Microsoft is ubiquitous. It therefore makes sense to use it whenever it is necessary to create beautiful output from a program. Delphi makes it actually very easy: The language support for Variants as references to OLE automation servers and the support for COM interfaces make steering MS-Word (or indeed Excel or MS-Access) quite easy.

Controlling MS-Word is done through its COM interface: Through Delphi’s OLE mechanism, an OLE reference is obtained to the MS-Word application, and then the various commands exposed by the MS-Word interface can be used to let MS-Word do virtually anything that is needed. The same can be done with Excel and other members of the MS-Office suite.

1. Create a New document

3. Turn auto on/off Spelling grammar check during create for performance

    word1.Options.CheckSpellingAsYouType := False;

    word1.Options.CheckGrammarAsYouType := False;

4. Do spelling and grammar check

word1.CheckSpelling(doc1.Content.Text);

    ShowMessage(IntToStr( doc1.SpellingErrors.Count));

    word1.CheckGrammar(doc1.Content.Text);

    ShowMessage(IntToStr( doc1.GrammaticalErrors.Count));

5. Add a new document

  doc1 := word1.Documents.Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam);

  doc1.Content.Text := ‘test’;  //Edit Document//

  Doc1.Save;   //Save Document//

6. Add a paragraph or a line with fonr format, paragraph format

    para1 := doc1.Content.Paragraphs.Add(EmptyParam);

    with para1.Range do

    begin

      Text := ‘Word Automation in Delphi’;

      Font.Size := 16;

      Font.Bold := 1;

      Font.Underline := 1;

      Font.Color := wdColorRed;

      ParagraphFormat.Alignment := wdAlignParagraphCenter;

    end;

    para1.Range.InsertParagraphAfter;

7. Paragraph with back groundcolor and selection color

    para1 := doc1.Content.Paragraphs.Add(EmptyParam);

    with para1.Range do

    begin

      Text := ‘Line with fotn, back ground color ‘;

      Font.Name := ‘Verdana’;

      Font.Size := 11;

      Font.Italic := 1;

      Shading.BackgroundPatternColor := wdColorYellow;

      MoveStart(wdCharacter, 83);

      Font.StrikeThrough := 1;

      Font.Color := wdColorRed;

      Shading.BackgroundPatternColor := wdColorSkyBlue;

      ParagraphFormat.Alignment := wdAlignParagraphRight;

    end;

    para1.Range.InsertParagraphAfter;

8. Insert picture

para1.Range.InlineShapes.AddPicture(‘C:Testtest1.png’, False, True, EmptyParam);

    para1.Range.InsertParagraphAfter;

9. Insert word art

iLeft := para1.Range.Information[wdHorizontalPositionRelativeToPage];

    iTop := para1.Range.Information[wdVerticalPositionRelativeToPage];

    doc1.Shapes.AddTextEffect(msoTextEffect29, ‘Auto Word Art’, ‘Algerian’, 20, 0, 0, iLeft, iTop,EmptyParam);

    para1.Range.InsertParagraphAfter;

10. Insert text box

iLeft := para1.Range.Information[wdHorizontalPositionRelativeToPage];

    iTop := para1.Range.Information[wdVerticalPositionRelativeToPage];

    Shape1 := doc1.Shapes.AddTextbox(msoTextOrientationHorizontal, iLeft, iTop, 180, 40, EmptyParam);

    shape1.TextFrame.TextRange.Text := ‘Enter Your Address Here’;

    shape1.TextFrame.TextRange.Font.Bold := 1;

    shape1.TextFrame.TextRange.Font.Color := wdColorBlue;

    para1.Range.InsertParagraphAfter;

11. Insert line shape

iLeft := para1.Range.Information[wdHorizontalPositionRelativeToPage];

    iTop := para1.Range.Information[wdVerticalPositionRelativeToPage];

    Shape1 := doc1.Shapes.AddLine(iLeft, iTop, iLeft+300, iTop, EmptyParam);

    shape1.Line.ForeColor.RGB := wdColorPink;

    shape1.Line.Weight := 2;

    shape1.Line.DashStyle := msoLineDashDot;

    para1.Range.InsertParagraphAfter;

12. Insert line with style

iLeft := para1.Range.Information[wdHorizontalPositionRelativeToPage];

    iTop := para1.Range.Information[wdVerticalPositionRelativeToPage];

    Shape1 := doc1.Shapes.AddLine(iLeft, iTop, iLeft+300, iTop, EmptyParam);

    shape1.Line.Style := msoLineThinThick;

    shape1.Line.Weight := 5;

    para1.Range.InsertParagraphAfter;

13. Insert line with color and pattern

iLeft := para1.Range.Information[wdHorizontalPositionRelativeToPage];

    iTop := para1.Range.Information[wdVerticalPositionRelativeToPage];

    Shape1 := doc1.Shapes.AddLine(iLeft, iTop, iLeft+300, iTop, EmptyParam);

    shape1.Line.Pattern := msoPatternOutlinedDiamond;

    shape1.Line.Weight := 5;

    shape1.Line.ForeColor.RGB := wdColorRed;

    shape1.Line.BackColor.RGB := wdColorLightGreen;

14. Insert line with arrow

iLeft := para1.Range.Information[wdHorizontalPositionRelativeToPage];

    iTop := para1.Range.Information[wdVerticalPositionRelativeToPage];

    Shape1 := doc1.Shapes.AddLine(iLeft, iTop, iLeft+300, iTop, EmptyParam);

    shape1.Line.Weight := 5;

    shape1.Line.ForeColor.RGB := wdColorPink;

    shape1.Line.BeginArrowheadStyle :=  msoArrowheadStealth;

    shape1.Line.BeginArrowheadLength :=  msoArrowheadLengthMedium;

    shape1.Line.BeginArrowheadWidth :=  msoArrowheadWide;

15. Insert Line with different arrow style

iLeft := para1.Range.Information[wdHorizontalPositionRelativeToPage];

    iTop := para1.Range.Information[wdVerticalPositionRelativeToPage];

    Shape1 := doc1.Shapes.AddLine(iLeft, iTop, iLeft+300, iTop, EmptyParam);

    shape1.Line.Weight := 5;

    shape1.Line.ForeColor.RGB := wdColorYellow;

    shape1.Line.EndArrowheadStyle :=  msoArrowheadStealth;

    shape1.Line.EndArrowheadLength :=  msoArrowheadLengthMedium;

    shape1.Line.EndArrowheadWidth :=  msoArrowheadWide;

    shape1.Line.BeginArrowheadStyle :=  msoArrowheadDiamond;

    shape1.Line.BeginArrowheadLength :=  msoArrowheadLengthMedium;

    shape1.Line.BeginArrowheadWidth :=  msoArrowheadWide;

16. Insert arrow shape

iLeft := para1.Range.Information[wdHorizontalPositionRelativeToPage] ;

    iTop := para1.Range.Information[wdVerticalPositionRelativeToPage];

    Shape1 := doc1.Shapes.AddShape(msoShapeUpArrow, iLeft, iTop, 100, 100, EmptyParam);

    shape1.Fill.PresetTextured(msoTextureWaterDroplets);

17. Insert smiley face

iLeft := para1.Range.Information[wdHorizontalPositionRelativeToPage]  + 120;

    iTop := para1.Range.Information[wdVerticalPositionRelativeToPage];

    Shape1 := doc1.Shapes.AddShape(msoShapeSmileyFace, iLeft, iTop, 100, 100, EmptyParam);

    shape1.Fill.ForeColor.RGB := wdColorYellow;

    shape1.Fill.BackColor.RGB := wdColorRed;

    shape1.Fill.TwoColorGradient(msoGradientHorizontal, 1);//variant 1-3//

18. Insert shape oval

iLeft := para1.Range.Information[wdHorizontalPositionRelativeToPage] + 240;

    iTop := para1.Range.Information[wdVerticalPositionRelativeToPage];

    Shape1 := doc1.Shapes.AddShape(msoShapeOval, iLeft, iTop, 100, 100, EmptyParam);

    shape1.Fill.PresetGradient(msoGradientFromCenter, 3, msoGradientHorizon);

19. Insert shape sun

iLeft := para1.Range.Information[wdHorizontalPositionRelativeToPage] + 360;

    iTop := para1.Range.Information[wdVerticalPositionRelativeToPage] ;

    Shape1 := doc1.Shapes.AddShape(msoShapeSun, iLeft, iTop, 100, 100, EmptyParam);

    shape1.TextFrame.TextRange.Text := ‘Sun’;

    shape1.TextFrame.TextRange.Font.Bold := 1;

    shape1.TextFrame.TextRange.Font.Color := wdColorWhite;

    shape1.Fill.ForeColor.RGB := wdColorRed;

    shape1.Fill.BackColor.RGB := wdColorOrange;

20. Insert superscript character 

para1 := doc1.Content.Paragraphs.Add(EmptyParam);

    with para1.Range do

    begin

      Text := ’10th Standard’;

      MoveStart(wdCharacter, 2); // from start to 2 character. 0 based index

      MoveEnd(wdCharacter, -9);  // from end to 9 character. 0 based index

      Font.Superscript := 1;

    end;

21. Insert subscript character 

para1 := doc1.Content.Paragraphs.Add(EmptyParam);

    with para1.Range do

    begin

      Text := ‘H2O is formula of water’;

      MoveStart(wdCharacter, 1); // from start to 1 character.0 based index

      MoveEnd(wdCharacter, -21);  // from end to 21 character. 0 based index

      Font.Subscript := 1;

    end;

22. Insert paragraph with format and border

  para1 := doc1.Content.Paragraphs.Add(EmptyParam);

    with para1.Range do

    begin

      Text := DupeString(‘Paragraph with Align=Justify; BGColor, Space and border. ‘, 5);

      ParagraphFormat.Alignment := wdAlignParagraphJustify;

      ParagraphFormat.Shading.BackgroundPatternColor := wdColorLightOrange;

      ParagraphFormat.Space2;

      ParagraphFormat.Borders.Enable := 1;

    end;

    para1.Range.InsertParagraphAfter;

23. Removed border from paragraph

ParagraphFormat.Borders.Enable := 0;

24. Paragraph first line indent

para1 := doc1.Content.Paragraphs.Add(EmptyParam);

    with para1.Range do

    begin

      Text := DupeString(‘Paragraph with Align=Left; First Line Indent , BGColor, Space and border. ‘, 5);

      ParagraphFormat.Alignment := wdAlignParagraphLeft;

      ParagraphFormat.Shading.BackgroundPatternColor := wdColorLightGreen;

      ParagraphFormat.Space2;

      ParagraphFormat.FirstLineIndent := 20;

      ParagraphFormat.Borders.Enable := 1;

    end;

25. Insert bullet list

para1 := doc1.Content.Paragraphs.Add(EmptyParam);

    with para1.Range do

    begin

      Text := ‘INDIA’+#13+’PAKISTAN’+#13+’CHINA’+#13+’BANGLADESH’+#13+’SRILANKA’;

      ListFormat.ApplyBulletDefaultOld;

      Shading.BackgroundPatternColor := wdColorLightTurquoise;

    end;

    para1.Range.InsertParagraphAfter;

26. Insert numbered list

 para1 := doc1.Content.Paragraphs.Add(EmptyParam);

    with para1.Range do

    begin

      Text := ‘MATH’+#13+’PHYSICS’+#13+’CHEMISTRY’+#13+’BOTANY’+#13+’ZOOLOGY’;

      ListFormat.ApplyNumberDefaultOld;

      Shading.BackgroundPatternColor := wdColorLightGreen;

    end;

    para1.Range.InsertParagraphAfter;

27. Insert outlined number format

 para1 := doc1.Content.Paragraphs.Add(EmptyParam);

    with para1.Range do

    begin

      Text := ‘LION’+#13+’TIGER’+#13+’ELEPHANT’+#13+’CHEETAH’;

      ListFormat.ApplyOutlineNumberDefaultOld;

      Shading.BackgroundPatternColor := wdColorLightYellow;

    end;

    para1.Range.InsertParagraphAfter;

28. Insert multi level number list

 para1 := doc1.Content.Paragraphs.Add(EmptyParam);

    with para1.Range do

    begin

      Text := ‘INDIA’;

      ListFormat.ApplyNumberDefaultOld;

      Font.Color := wdColorBlue;

    end;

    para1.Range.InsertParagraphAfter;

    para1 := doc1.Content.Paragraphs.Add(EmptyParam);

    with para1.Range do

    begin

      Text := ‘NEW DELHI’+#13+’BOMBAY’+#13+’CHENNAI’;

      ListFormat.ListIndent;

      Font.Color := wdColorRed;

    end;

    para1.Range.InsertParagraphAfter;

    para1 := doc1.Content.Paragraphs.Add(EmptyParam);

    with para1.Range do

    begin

      Text := ‘PAKISTAN’;

      ListFormat.ListOutdent;

      Font.Color := wdColorViolet;

    end;

    para1.Range.InsertParagraphAfter;

    para1 := doc1.Content.Paragraphs.Add(EmptyParam);

    with para1.Range do

    begin

      Text := ‘KARACHI’;

      ListFormat.ListIndent;

      Font.Color := wdColorIndigo;

    end;

    para1.Range.InsertParagraphAfter;

    para1 := doc1.Content.Paragraphs.Add(EmptyParam);

    with para1.Range do

    begin

      Text := ‘BANGLADESH’;

      ListFormat.ListOutdent;

      Font.Color := wdColorBrown;

    end;

    para1.Range.InsertParagraphAfter;

    para1 := doc1.Content.Paragraphs.Add(EmptyParam);

    with para1.Range do

    begin

      Text := ‘DHAKA’;

      ListFormat.ListIndent;

      Font.Color := wdColorLime;

    end;

    para1.Range.InsertParagraphAfter;

29. Remove bullet and numbered format

ListFormat.RemoveNumbers(wdNumberParagraph);

30. Insert symbol

para1 := doc1.Content.Paragraphs.Add(EmptyParam);

    with para1.Range do

    begin

      para1.Range.InsertBefore(‘Symbol’);

      InsertSymbol(87, ‘Symbol’, EmptyParam, EmptyParam);

      InsertSymbol(166, ‘Webdings’, EmptyParam, EmptyParam);

      InsertSymbol(253, ‘Wingdings’, EmptyParam, EmptyParam);

      InsertSymbol(254, ‘Wingdings’, EmptyParam, EmptyParam);

    end;

    para1.Range.InsertParagraphAfter;

31. Insert table with format and merged cell

    // a table of 5 rows and 5 columns//
    table1 := doc1.Content.Tables.Add(para1.Range, 5, 5, EmptyParam, EmptyParam );

    table1.Borders.Enable := 1;

    table1.Columns.Item(1).Width := word1.InchesToPoints(0.5);

    table1.Columns.Item(2).Width := word1.InchesToPoints(2);

    table1.Columns.Item(3).Width := word1.InchesToPoints(3);

    table1.Columns.Item(4).Width := word1.InchesToPoints(0.5);

    table1.Columns.Item(5).Width := word1.InchesToPoints(0.5);

    table1.Columns.Item(4).Shading.BackgroundPatternColor := wdColorYellow;

    table1.Columns.Item(5).Shading.BackgroundPatternColor := wdColorYellow;
    // table headers//

    table1.Cell(1, 1).Range.Text := ‘Sr. No’;

    table1.Cell(1, 2).Range.Text := ‘Name’;

    table1.Cell(1, 3).Range.Text := ‘Address’;

    table1.Rows.Item(1).Range.Font.Bold := 1;

    table1.Rows.Item(1).Range.Font.Color := wdColorBlue;

    table1.Rows.Item(1).Range.Shading.BackgroundPatternColor := wdColorGray125;
table1.Rows.Item(1).Cells.Item(4).Merge(table1.Rows.Item(1).Cells.Item(5));

    table1.Cell(1, 4).Range.Text := ‘Marks’;

    table1.Cell(1, 4).Range.ParagraphFormat.Alignment := wdAlignParagraphCenter;

    //data filling//    

    table1.Cell(2, 1).Range.Text := ‘1’;

    table1.Cell(2, 2).Range.Text := ‘RAJ’;

    table1.Cell(2, 3).Range.Text := ‘DELHI’;

    table1.Cell(2, 4).Range.Text := ’40’;

    table1.Cell(2, 5).Range.Text := ’50’;

    table1.Rows.Item(2).Range.Font.Color := wdColorRed;

    table1.Cell(3, 1).Range.Text := ‘2’;

    table1.Cell(3, 2).Range.Text := ‘KAMAL’;

    table1.Cell(3, 3).Range.Text := ‘BOMBAY’;

    table1.Cell(3, 4).Range.Text := ’67’;

    table1.Cell(3, 5).Range.Text := ’95’;

    table1.Rows.Item(3).Range.Font.Color := wdColorRed;

    table1.Cell(4, 1).Range.Text := ‘3’;

    table1.Cell(4, 2).Range.Text := ‘SARIF’;

    table1.Cell(4, 3).Range.Text := ‘SRINAGAR’;

    table1.Cell(4, 4).Range.Text := ’94’;

    table1.Cell(4, 5).Range.Text := ’24’;

    table1.Rows.Item(4).Range.Font.Color := wdColorRed;

    table1.Cell(5, 1).Range.Text := ‘4’;

    table1.Cell(5, 2).Range.Text := ‘MITHESH’;

    table1.Cell(5, 3).Range.Text := ‘VARANASI’;

    table1.Cell(5, 4).Range.Text := ’46’;

    table1.Cell(5, 5).Range.Text := ’45’;

    table1.Rows.Item(5).Range.Font.Color := wdColorRed;


32. Insert header and footer

33. Selection and range

34. Move to specific character, line , table, paragraph etc.

//wdCharacter, wdWord, wdSentence, wdParagraph, wdCell, wdColumn, wdRow, wdTable//

35. Select specific line

36. Cut, copy, paste

    para1.Range.Cut;

    para1.Range.Copy;

    para1.Range.Paste;

37. Find a word

    word1.Selection.Find.Text := ‘some’;

    word1.Selection.Find.ClearFormatting;

    word1.Selection.Find.Forward := True;

    word1.Selection.Find.Wrap := wdFindContinue;

    word1.Selection.Find.MatchWholeWord := True;

    if word1.Selection.Find.Execute(EmptyParam,EmptyParam, EmptyParam,

                EmptyParam, EmptyParam, EmptyParam, EmptyParam,

                EmptyParam, EmptyParam, EmptyParam , EmptyParam,

                EmptyParam, EmptyParam, EmptyParam, EmptyParam) then

    ShowMessage(‘yes’);

38. Find and replace

    word1.Selection.Find.Text := ‘some’;

    word1.Selection.Find.ClearFormatting;

    word1.Selection.Find.Forward := True;

    word1.Selection.Find.Wrap := wdFindContinue;

    word1.Selection.Find.MatchWholeWord := True;

    word1.Selection.Find.Replacement.Text := ‘test1’;

    word1.Selection.Find.Replacement.ClearFormatting;

    word1.Selection.Find.Replacement.Highlight := 1;

    word1.Selection.Find.Execute(EmptyParam,EmptyParam, EmptyParam,

                EmptyParam, EmptyParam, EmptyParam, EmptyParam,

                EmptyParam, EmptyParam, EmptyParam , wdReplaceAll,

                EmptyParam, EmptyParam, EmptyParam, EmptyParam);

39. Print Preview

    doc1.PrintPreview;

Основы работы с MS Word. Создание, открытие, сохранение и закрытие документа Word с помощью Delphi Функция, реализующая механизм доступа к OLE-объекту, находится в библиотеке ComObj.pas. Эта функция – CreateOleObject. Ее единственным аргументом является строка-идентификатор, а возвращает она ссылку на объект.
Доступ к приложению Word осуществляется, как правило, посредством основных двух объектов, Word.Application и Word.Document. Они же обеспечивают доступ и к другим объектам Word (текст, таблицы, кнопки, меню и т.д.). Наиболее легкий метод работы с COM-сервером Word базируется на использовании переменных типа Variant.
Давайте на примере рассмотрим создание документа Word помощью Delphi.
Для начала создадим новый проект (File | New | VCL Foms Application-Delphi) и поместим на него 4 кнопки (TButton). Поменяем заголовки (свойство Caption) этих кнопок на: «Создать документ Word», «Открыть документ Word», «Сохранить документ Word», «Закрыть документ Word». Как понятно из названий, мы будем открывать, создавать, сохранять и закрывать документ Word при нажатии на эти кнопки.
Чтобы начать работать с Word необходимо в модуле формы указать ссылку на использование библиотеки ComObj, поэтому в разделе uses мы дописываем ComObj. Также нам необходимо объявить переменную типа Variant. Давайте создадим обработчик события OnClick для кнопки «Создать документ Word» и напишем код:

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
w:=CreateOleObject(‘Word.Application’);
end;

Если сейчас запустить нашу программу и нажать на кнопку «Создать документ Word», то приложение Word будет запущено, но его окно не будет отображено на экране монитора. В память компьютера будет загружен объект Application, который обеспечивает доступ ко всем внутренним объектам, коллекциям и свойствам. Сейчас нас интересует свойство Visible этого объекта. Если значение этого свойства установить в True, то окно приложения Word станет видимым. Поэтому давайте допишем еще одну строчку в наш код:

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
w:=CreateOleObject(‘Word.Application’);// запуск приложения Word
w.Visible:=true; // делаем Word видимым
end;

Вот теперь если запустить программу и нажать на кнопку «Создать документ Word», то наше приложение Word станет видимым и отобразится на экране монитора.
Для того чтобы создать новый документ, необходимо использовать метод Add, коллекции Documents. Поэтому если мы хотим создать новый документ Word с помощью Delphi, необходимо написать:

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
w:=CreateOleObject(‘Word.Application’);// запуск приложения Word
w.Documents.Add; // создание нового документа
w.Visible:=true; // делаем Word видимым
end;

В этом коде, после выполнения метода Add, будет создан новый документ, который отобразится в окне приложения Word. Обратите внимание, что видимым наш документ (w.Visible:=true) я делаю в самую последнюю очередь. При формировании отчетов, рекомендуется так делать. Это сокращает время создания отчетов и повышает производительность работы приложений.
С созданием документа Word в Delphi разобрались. Теперь перейдем к открытию документа Word. Для этого создаем обработчик события OnClick для кнопки «Открыть документ Word» и напишем следующее:

Код

procedure TForm1.Button2Click(Sender: TObject);
begin
w:=CreateOleObject(‘Word.Application’);// запуск приложения Word
w.Documents.Open(ExtractFilePath(paramstr(0))+’/Delphi and MS Word.doc’); //открываем документ Word находящийся в папке с программой
w.Visible:=true; // делаем Word видимым
end;

Синтаксис метода Open глядит следующим образом:

Код

Documents.Open(FileName, ConfirmConversions, ReadOnly, AddToRecentFiles, PasswordDocument, PasswordTemplate, Revert, WritePasswordDocument, WritePasswordTemplate, Format)

Давайте рассмотрим аргументы метода Open, их типы и функциональное значение:
FileName: string — путь и имя файла;
ConfirmConversions: boolean — False — не открывать диалоговое окно «Преобразование файла» при открытии файла, формат которого не соответствует формату Word (doc или docx)
ReadOnly:boolean — True — открыть документ в режиме «Только для чтения»
AddToRecentFiles: boolean — True, чтобы добавить документ в список недавно открытых документов.
PasswordDocument: string — пароль для открытия документа
PasswordTemplate: string — пароль для открытия шаблона
Revert : boolean — True, чтобы вернуться к сохраненному документу, если этот документ открывается повторно.
WritePasswordDocument: string — пароль для сохранения измененного документа в файле
WritePasswordTemplate:string — пароль для сохранения изменений в шаблоне
Format:integer — формат открываемого документа.

Обязательным параметром метода Open является только FileName, остальные параметры могут отсутствовать, как отсутствуют в вышеприведенном примере кода. Но если вдруг нам понадобится воспользоваться некоторыми из этих параметров, то их необходимо явно указать при вызове метода. Например, если мы решим открыть файл в режиме «Только для чтения», то код будет выглядеть следующим образом:

Код

procedure TForm1.Button2Click(Sender: TObject);
begin
w:=CreateOleObject(‘Word.Application’);// запуск приложения Word
w.Documents.Open(ExtractFilePath(paramstr(0))+’/DelphiSchool.doc’, ReadOnly:=true); // открываем документ Word находящийся в папке с программой в режиме «Только для чтения»
w.Visible:=true; // делаем Word видимым
end;

С открытием документа Word тоже разобрались. Переходим к сохранению документа. Для кнопки «Сохранить документ Word» создаем обработчик события OnClick и пишем:

Код

procedure TForm1.Button3Click(Sender: TObject);
begin
w:=CreateOleObject(‘Word.Application’);// запуск приложения Word
//открываем документ Word находящийся в папке с программой в режиме «Только для чтения»
w.Documents.Open(ExtractFilePath(paramstr(0))+’/DelphiSchool.doc’, ReadOnly:=true);
// сохраняем документ в папку с программой под именем DelphiSchool Copy.doc
w.ActiveDocument.SaveAs(ExtractFileDir(paramstr(0))+’/DelphiSchool Copy.doc’);
w.Visible:=true; // делаем Word видимым
end;

Аргументы метода SaveAs, их типы и функциональное назначение представлены ниже:
FileName: String — Путь и имя файла
FileFormat — Число Формат файла
LockComments: Boolean — True — не сохранять комментарии
Password: String — Пароль, который будет использоваться при открытии документа
AddToRecentFiles: Boolean — True — добавить имя файла в список меню File
WritePassword: String — Пароль, который будет использоваться для сохранения документа
ReadOnlyRecommended: Boolean — True — в последующем документ можно открыть «только для чтения»
EmbedTrueTypeFonts: Boolean — True — при сохранении перевести шрифты документа в TrueType
SaveNativePictureFormat: Boolean — Используется для импорта графики из форматов, не поддерживаемых Windows. True — импортировать только графику, поддерживаемую Windows
SaveFormsData: Boolean — True — сохранить форму документа без текста
SaveAsAOCELetter: Boolean — Используется в версиях Word для компьютеров Apple Macintosh

При вызове метода SaveAs, как и при Open, можно задавать как один, так и несколько аргументов. Но, как правило, достаточно только первого аргумента (путь и имя файла).
Ну и последнее что мы рассмотрим – это закрытие документа. Закрыть документы можно с помощью метода Close коллекции Documents. Создадим обработчик события OnClick для кнопки «Закрыть документ Word» и напишем код:

Код

procedure TForm1.Button4Click(Sender: TObject);
begin
w.ActiveDocument.Close(True); // сохраняем и закрываем Word
end;

После того как документ закрыт, можно закрывать и приложение Word:

Код

procedure TForm1.Button4Click(Sender: TObject);
begin
w.ActiveDocument.Close(True); // сохраняем и закрываем Word
w.Quit;
end;

К уроку (статье) Основы работы с MS Word. Создание, открытие, сохранение и закрытие документа Word с помощью Delphi прилагается исходник, посмотрев который, вы можете ознакомиться с полным исходным кодом программы и посмотреть как работает созданная программа. Исходный код сопровождается комментариями, благодаря чему вы сможете легко в нем разобраться. Но я настоятельно рекомендую делать все самостоятельно. Так вы лучше и быстрее усвоите то, о чем говорилось в этом уроке

Для того чтобы получить возможность скачать исходник Delphi к этому уроку, необходимо посетить сайт рекламодателя. После этого, появится ссылка на исходник Delphi к уроку Основы работы с MS Word. Создание, открытие, сохранение и закрытие документа Word с помощью Delphi
Нажмите на эту ссылку Ссылка

Понравилась статья? Поделить с друзьями:
  • Командные вкладки ленты word
  • Командная строка word microsoft
  • Командная строка pdf to excel
  • Командная работа в word
  • Командировочное удостоверение форма т 10 бланк скачать бесплатно в excel