Word жирный шрифт программно

My program needs to generate highly simple reports in the Office .doc format (non-XML), and certain parts of the document need to be bold. I’ve been looking at the documentation for defining ranges, which is partly what my code derives from at the moment. This part of the documentation doesn’t really give me enough details to implement this in general in my document. Here is my code so far:

object miss = System.Reflection.Missing.Value;
object Visible = true;
object start = 0;

Microsoft.Office.Interop.Word.Application WordApp = new Microsoft.Office.Interop.Word.Application();
Document report = WordApp.Documents.Add(ref miss, ref miss, ref miss, ref miss);

String header = "Bold Header: ";
Range headerRange = report.Range(ref start, ref miss);
headerRange.Text = header;
headerRange.Font.Bold = -1;

String data = "Information underneath the header";
Range dataRange = report.Range();
dataRange.Text = data;
dataRange.Font.Bold = 1;

object filename = "test.doc";

report.SaveAs(ref filename, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss);
object saveChanges = Microsoft.Office.Interop.Word.WdSaveOptions.wdPromptToSaveChanges;
object originalFormat = Microsoft.Office.Interop.Word.WdOriginalFormat.wdWordDocument;
object routeDocument = true;
WordApp.Visible = true;

This produces a word document with only the text **Information underneath the header**. This is a simple example.

My document won’t get much more complicated than this, but I’m hoping to generate Word documents based on variable amounts of data, with bold text and non-bold text dispersed throughout.

Приветствую всех читателей блога scriptcoding.ru. В этой публикации мы рассмотрим объект Font, который позволяет задать основные параметры шрифта в Word.

В прошлых статьях мы научились создавать приложение Word (смотрите «Word.Application«), новый документ (смотрите «Word.Documents») и также рассмотрели процесс добавления заданного текста в созданный документ с помощью объекта Selection (смотрите «Word.Selection«). Теперь настало время познакомиться с объектом Font, доступ к которому можно получить через одноименное свойство. Фактически, объект Font позволяет задать параметры форматирования шрифта.

Содержание

  1. Объект Font — основные параметры шрифта в Word
  2. Свойства класса Font – параметры форматирования шрифта
  3. Методы объекта Font – параметры форматирования шрифта в Word

Объект Font — основные параметры шрифта в Word

Сам по себе класс Font довольно прост, так как все свойства и методы интуитивно понятны. Сами свойства я разбил на несколько категорий в зависимости от их типа. И так, приступим…

Свойства класса Font – параметры форматирования шрифта

параметры шрифта в Word

Свойства, которые доступны для чтения и для записи, принимают логические значения TRUE или FALSE. При установлении значения TRUE свойства позволяют отформатировать выделенный текст: сделать жирным, курсивом, подчеркнутым и так далее.

AllCaps– Все прописные.

SmallCaps– Малые прописные.

Bold– Жирный шрифт в Word, само свойство возвращает True, False или wdUndefined (смесь True или False)

DoubleStrikeThrough– Двойное зачеркивание.

StrikeThrough– Одинарное зачеркивание.

Emboss– Приподнятый.

Engrave– Утопленный.

Italic– Курсив.

Outline– Контур.

Shadow– С тенью.

Subscript– Подстрочный знак.

Superscript– Надстрочный знак.

основные параметры Word шрифта

Свойства, которые позволяют задать или получить значение, заданное определенной константой (если происходит выполнение кода в редакторе VBA то можно использовать не целое число, и именованное значение).

ColorIndex– Параметры цвета текста шрифта в Word, значения константы WdColorIndex:

  • wdAuto — 0 — Автоматический цвет. По умолчанию, обычно черный цвет.
  • wdByAuthor — -1 — Цвет определяется автором документа
  • wdNoHighlight — 0 — Удаляет подсветку.
  • wdBlack — 1 – черный.
  • wdBlue — 2 – синий.
  • wdTurquoise — 3 – бирюзовый.
  • wdBrightGreen — 4 — ярко-зеленый.
  • wdPink — 5 – розовый.
  • wdRed — 6 – красный.
  • wdYellow — 7 – желтый.
  • wdWhite — 8 – белый.
  • wdDarkBlue — 9 — темно-синий.
  • wdTeal — 10 – бирюзовый.
  • wdGreen — 11 – зеленый.
  • wdViolet — 12 – фиолетовый.
  • wdDarkRed — 13 — темно-красный.
  • wdDarkYellow — 14 — темно-желтый.
  • wdGray50 — 15 — тень 50 серого.
  • wdGray25 — 16 — тень 25 серого.

Underline— Тип подчеркивания, заданный значением константы WdUnderline:

  • wdUnderlineNone — 0 — нет подчеркивания.
  • wdUnderlineSingle — 1 — одна линия, по умолчанию.
  • wdUnderlineWords — 2 — подчеркнет только отдельные слова.
  • wdUnderlineDouble — 3 — двойная линия.
  • wdUnderlineDotted — 4 – точки.
  • wdUnderlineThick — 6 — единая жирная линия.
  • wdUnderlineDash — 7 – тире.
  • wdUnderlineDotDash — 9 — чередующиеся точки и тире.
  • wdUnderlineDotDotDash — 10 – чередующиеся две точки и тире.
  • wdUnderlineWavy — 11 — одна волнистая линия.
  • wdUnderlineDottedHeavy — 20 – жирные точки.
  • wdUnderlineDashHeavy — 23 — жирные тире.
  • wdUnderlineDotDashHeavy — 25 — чередующиеся жирные точки и жирные тире.
  • wdUnderlineDotDotDashHeavy — 26 — чередующиеся жирные две точки и тире.
  • wdUnderlineWavyHeavy — 27 — жирная волнистая линия.
  • wdUnderlineDashLong — 39 — длинное тире.
  • wdUnderlineWavyDouble — 43 — двойная волнистая линия.
  • wdUnderlineDashLongHeavy — 55 — длинное жирное тире.

UnderlineColor— Возвращает или устанавливает 24-битный цвет подчеркивания, содержит значение константы WdColor:

  • wdColorAqua — 13421619 — аква
  • wdColorAutomatic — 16777216 — Автоматическая цвет. По умолчанию, обычно черный цвет.
  • wdColorBlack — 0 – черный.
  • wdColorBlue — 16711680 – синий.
  • wdColorBlueGray — 10053222 — сине-серый.
  • wdColorBrightGreen — 65280 — ярко-зеленый.
  • wdColorBrown — 13209 – коричневый.
  • wdColorDarkBlue — 8388608 — темно-синий.
  • wdColorDarkGreen — 13056 — темно-зеленый.
  • wdColorDarkRed — 128 — темно-красный.
  • wdColorDarkTeal — 6697728 – темно-бирюзовый.
  • wdColorDarkYellow — 32896 — темно-желтый.
  • wdColorGold — 52479 – золотистый.
  • wdColorGray05 — 15987699 — тень05серого.
  • wdColorGray10 — 15132390 — тень10серого.
  • wdColorGray125 — 14737632 — тень125серого.
  • wdColorGray15 — 14277081 — тень15серого.
  • wdColorGray20 — 13421772 — тень20серого.
  • wdColorGray25 — 12632256 — тень25серого.
  • wdColorGray30 — 11776947 — тень30серого.
  • wdColorGray35 — 10921638 — тень35 серого.
  • wdColorGray375 — 10526880 — тень375серого.
  • wdColorGray40 — 10066329 — тень40серого.
  • wdColorGray45 — 9211020 — тень45серого.
  • wdColorGray50 — 8421504 — тень50серого.
  • wdColorGray55 — 7566195 — тень55серого.
  • wdColorGray60 — 6710886 — тень60серого.
  • wdColorGray625 — 6316128 — тень625серого.
  • wdColorGray65 — 5855577 — тень65серого.
  • wdColorGray70 — 5000268 — тень70серого.
  • wdColorGray75 — 4210752 — тень75серого.
  • wdColorGray80 — 3355443 — тень80серого.
  • wdColorGray85 — 2500134 — тень85серого.
  • wdColorGray875 — 2105376 — тень875серого.
  • wdColorGray90 — 1644825 — тень90серого.
  • wdColorGray95 — 789516 — тень95серого.
  • wdColorGreen — 32768 – зеленый.
  • wdColorIndigo — 10040115 – синий.
  • wdColorLavender — 16751052 – бледно-лиловый.
  • wdColorLightBlue — 16737843 — светло-синий.
  • wdColorLightGreen — 13434828 — светло-зеленый.
  • wdColorLightOrange — 39423 — светло-оранжевый.
  • wdColorLightTurquoise — 16777164 – светло-бирюзовый.
  • wdColorLightYellow — 10092543 — светло-желтый.
  • wdColorLime — 52377 – липовый.
  • wdColorOliveGreen — 13107 – оливково-зеленый.
  • wdColorOrange — 26367 – оранжевый.
  • wdColorPaleBlue — 16764057 — бледно-голубой.
  • wdColorPink — 16711935 – розовый.
  • wdColorPlum — 6697881 — темно-фиолетовый.
  • wdColorRed — 255 – красный.
  • wdColorRose — 13408767 – розовый.
  • wdColorSeaGreen — 6723891 – зеленый.
  • wdColorSkyBlue — 16763904 — небесно-голубой.
  • wdColorTan — 10079487 — желтовато-коричневый.
  • wdColorTeal — 8421376 — бирюзовый.
  • wdColorTurquoise — 16776960 — Бирюзовый цвет.
  • wdColorViolet — 8388736 – фиолетовый.
  • wdColorWhite — 16777215 – белый.
  • wdColorYellow — 65535 – желтый.

DiacriticColor— Как ColorIndex, позволяет задать параметры цвета текста шрифта в word, принимает значения константы WdColor.

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

Position– Позволяет получить или задать смещение текста в пунктах относительно базовой линии.

Scaling— Возвращает или устанавливает процент масштаба, применяемого к шрифтом.

Spacing— Возвращает или задает расстояние в пунктах между символами. Считывание / запись

Size– Позволяет получить или установить параметры форматирования шрифта в Word: размер в пунктах.

Name— Возвращает или задает имя.

настройка параметров шрифтов в word

Методы объекта Font – параметры форматирования шрифта в Word

Grow() — Увеличивает размер на один пункт.

Shrink() — Уменьшает размер на один пункт.

Reset() – Полностью очищает параметры форматирования текст шрифта в Word.

Хорошо, основные свойства и методы мы рассмотрели, теперь настало время приступить к программированию, я напишу два примера под Wndows Script Host. Логика проста: происходит создание нового документа Word, далее происходит вставка текста с помощью объекта Selection, после происходит выделение различных диапазонов текста и их форматирование – основные параметры шрифта в Word.

Пример на VBScript

' ------------------------------------------------
' Объект Word Font
' Основные параметры шрифта в Word
' Font.vbs
' ------------------------------------------------
Option Explicit
 
dim oWord, oDoc, oSel, SelText, i, oFon, sel
 
' ссылка на объект Word Application
Set oWord = CreateObject("Word.Application")
' ссылка на колекцию Documents
Set oDoc = oWord.Documents
' создаем новый документ                                                                                                     основные параметры шрифта в Word
oDoc.Add()
' ссылка на объект Selection
Set oSel = oWord.Selection
' ссылка на объект Font
Set oFon = oSel.Font
' делаем документ видимым
oWord.Visible = true
 
With oSel
     For i = 0 To 100
                 ' вставляем текст
                 .Text = "параметры форматирования шрифта в Word"
                 ' Перемещаем курсор в конец текста
                 .EndOf
                 ' вставляем параграф
                 .TypeParagraph
     Next
End With
 
'-------------------------------------------------------------
' Форматируем текст в документе Word
'-------------------------------------------------------------
 
With oSel
     .SetRange 0,50
     oFon.Bold = true
     .SetRange 50,100
     oFon.DoubleStrikeThrough = true
     .SetRange 100,150
     oFon.Emboss = true
     .SetRange 150,200
     oFon.Engrave=true
     .SetRange 200,250
     oFon.Italic = true
     .SetRange 250,300
     oFon.Outline = true
     .SetRange 300,350
     oFon.Shadow = true
     .SetRange 350,400
     oFon.SmallCaps = true
     .SetRange 400,450
     oFon.Subscript = true
     .SetRange 450,500
     oFon.Superscript = true
     .SetRange 500,550
     oFon.StrikeThrough = true
     .SetRange 550,600
     oFon.Hidden = true
     .SetRange 600,650
     oFon.Name = "Times New Roman"                                                                                     ' основные параметры шрифта Word
     .SetRange 650,700
     oFon.Position = 50
     .SetRange 750,800
     oFon.Scaling = 120
     .SetRange 800,850
     oFon.Size = 30
     .SetRange 850,900
     oFon.Spacing = 20
     .SetRange 900,950
     oFon.Underline = 10
     oFon.UnderlineColor=8421376
End With
 
With oFon          
     sel = 950
     ' меняем цвет для разных фрагментов
     for i=1 to 16
                 sel = 950+(i*200)
                 oSel.SetRange sel+100, sel + 200
                 .ColorIndex = i
                 sel = sel + 200
     next
 
     ' делаем задержку в 3 секунды
     Wscript.Sleep 3000
     ' выделяем весь текст
     oDoc(1).Select
     Wscript.Sleep 3000
     ' очищаем параметры форматирования текста шрифта в Word
     .Reset
     ' устанавливаем верхний регистр
     .AllCaps = true
     Wscript.Sleep 3000
     ' устанавливаем нижний регистр
     .SmallCaps = true
End With

Пример на JScript

// ------------------------------------------------
// Объект Word Font
// Основные параметры шрифта в Word
// Font.js
// ------------------------------------------------
var oWord1, oDoc1, oSel1, SelText, i, oFon1, sel1;
 
// ссылка на объект Word Application
oWord1 = WScript.CreateObject("Word.Application");
// ссылка на коллекцию Documents
oDoc1 = oWord1.Documents;
// создаем новый документ                                                                                                    параметры форматирования шрифта
oDoc1.Add();
// ссылка на объект Selection
oSel1 = oWord1.Selection;
// ссылка на объект Font
oFon1 = oSel1.Font;
// делаем документ видимым
oWord1.Visible = true;
 
with (oSel1){
     for(i = 0; i<=100; i++){
                 // вставляем текст
                 Text = "параметры форматирования шрифта в Word";
                 // Перемещаем курсор в конец текста
                 EndOf();
                 // вставляем параграф
                 TypeParagraph();
     }
}
 
//--------------------------------------------------------
// Форматируем текст в документе Word
//--------------------------------------------------------
with (oSel1){
     SetRange(0,50);
     oFon1.Bold = true;
     SetRange(50,100);
     oFon1.DoubleStrikeThrough = true;
     SetRange(100,150);
     oFon1.Emboss = true;
     SetRange(150,200);
     oFon1.Engrave=true;
     SetRange(200,250);
     oFon1.Italic = true;                                                                                                  // параметры форматирования шрифта
     SetRange(250,300);
     oFon1.Outline = true;
     SetRange(300,350);
     oFon1.Shadow = true;
     SetRange(350,400);
     oFon1.SmallCaps = true;
     SetRange(400,450);
     oFon1.Subscript = true;
     SetRange(450,500);
     oFon1.Superscript = true;
     SetRange(500,550);
     oFon1.StrikeThrough = true;
     SetRange(550,600);
     oFon1.Hidden = true;
     SetRange(600,650);
     oFon1.Name = "Times New Roman";
     SetRange(650,700);
     oFon1.Position = 50;
     SetRange(750,800);
     oFon1.Scaling = 120;
     SetRange(800,850);
     oFon1.Size = 30;
     SetRange(850,900);
     oFon1.Spacing = 20;
     SetRange(900,950);
     oFon1.Underline = 10;
     oFon1.UnderlineColor=8421376;
}
with (oFon1){
     sel1 = 950;
     // меняем цвет для разных фрагментов
     for(i = 0; i<=16; i++){
                 sel1 = 950+(i*200);
                 oSel1.SetRange(sel1+100, sel1 + 200);
                 ColorIndex = i;
                 sel1 += 200;
     }
 
     // делаем задержку в 3 секунды
     WScript.Sleep(3000)
     // выделяем весь текст
     oDoc1(1).Select();
     WScript.Sleep(3000);
     // очищаем параметры форматирования текста шрифта в Word
     Reset();
     // устанавливаем верхний регистр
     AllCaps = true;
     WScript.Sleep(3000)
     // устанавливаем нижний регистр
     SmallCaps = true;
}

настройка параметров форматирования Word шрифта

Хорошо, теперь давайте разберем данные примеры. Логика работы программного кода одинакова, сразу после создания документа происходит несколько этапов:

Этап первый – в цикле for (смотрите синтаксис для языка vbscript — «Урок 6 по VBScript: Циклы for…next и for each…next» и jscript — «Урок 9 по JScript — оператор цикла for«) происходит вставка текста, с учетом параграфа и перевода строки.

Этап второй – Тут в блоке with содержится длинная череда из выделения фрагментов, для которых задаются основные параметры шрифта в Word: размер, отступы, имя и так далее.

Этап третий – Снова следует блок with, в теле которого выборочно происходит смена цвета для выделенных фрагментов. Далее с задержкой в 3 секунды (смотрите статью «Объект WScript — методы sleep, quit и echo и 8 свойств«) сбрасываются параметры форматирования шрифта и меняется регистр символов.

I’m creating a word document programatically using VBA.

1) I have a a string with value — «Strategy». I want to make it bold and to be displayed in the word document.

I have tried this below, but the text is never changed:

Dim wrdApp As Word.Application
Dim wrdDoc As Word.Document
Set wrdApp = CreateObject("Word.Application")

Dim strategy As String
strategy = "STRATEGY"
Dim objWdRange As Word.Range


wrdApp.Visible = True
Set wrdDoc = wrdApp.Documents.Open("C:Program FilesDailyStrategy.doc")


With wrdDoc
    If wrdDoc.Bookmarks.Exists("MarketCommentry") Then
        wrdDoc.Bookmarks("MarketCommentry").Range.Text =  strategy 

    Set objWdRange = wrdDoc.Content
     With objWdRange.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Text = "STRATEGY"

        'Make found bold and italic
        With .Replacement.Font
            .Bold = True
            .Italic = True
        End With
        .Execute Replace:=wdReplaceAll
    End With
End With

End If
regards

Kojo

asked Jan 7, 2010 at 11:50

Kojof's user avatar

KojofKojof

4197 gold badges15 silver badges23 bronze badges

EDIT:: I should have better tried in the VBA debugger first, which I did now. This one should work:

With wrdDoc
   Set objWdRange = wrdDoc.Content
    With objWdRange.Find
       .ClearFormatting
       .Text = "STRATEGY"
       .Execute Replace:=wdReplaceNone
   End With
End With

If objWdRange.Find.Found Then
  'Make found bold and italic
  With objWdRange.Font
       .Bold = True
      .Italic = True
  End With
End If

answered Jan 7, 2010 at 12:00

Doc Brown's user avatar

Doc BrownDoc Brown

19.6k7 gold badges52 silver badges88 bronze badges

5

   rarmi

24.11.10 — 10:05

Есть задача в Word документе программно создать текст с форматированием. Форматирование следующее: в таблице 2 колонки, в правой колонке в одной строке необходимо вставить последовательно текст: Строка жирным начертанием, Строка обычного начертания но с маркером, Строка жирним начертанием с другим маркером, Пустая строка.

Подскажите, пожалуйста. Может, примеры как-нибудь есть?

   Denp

1 — 24.11.10 — 10:08

а в чем проблема?

   rarmi

2 — 24.11.10 — 10:10

так подскажите — ка это сделать, если сталкивались?

   rarmi

3 — 24.11.10 — 10:11

я очень извиняюсь — это не 7.7., это 8. Промахнулась в теме..

   Denp

4 — 24.11.10 — 10:15

(2) сорри, не увидел слова «программно»

   BuHu

5 — 24.11.10 — 10:24

(0) открываешь ворд включаешь запись макроса , делаешь то что тебе надо что б программа делала , берех код из макроса и адоптируешь его под 1с . как то так

   rarmi

6 — 24.11.10 — 10:28

сложности в адаптации )))
если не сложно — можно текст примера? ))

   BuHu

7 — 24.11.10 — 10:33

ворд = СоздатьОбъект(«Word.Application»);
ворд.Documents.Open(СокрЛП(КаталогВременныхФайлов()+ВрФайл));
ворд.Selection.EndKey(6);            ворд.Selection.Font.Name=»Arial»;
ворд.Selection.Font.Size=12;
ворд.Selection.Font.Bold=1;
ворд.Selection.TypeText(» («+ТЗ.Группа.Код+» )  «+ТЗ.Группа.Наименование+»   — «+ТЗ.Таб.КоличествоСтрок()+»  видов.»);

   rarmi

8 — 24.11.10 — 10:37

как в одной ячейке таблицы последовательно вставить строчки:
1. Жирный текст (без маркера)
2. текст с маркером (нежирный)
3. текст без маркера (нежирный)

   BuHu

9 — 24.11.10 — 10:47

(8) так же как и в ворде

   rarmi

10 — 24.11.10 — 10:50

как это сделать в ворде — это понятно.
а вот как это сделать в 1с?
программно…

   BuHu

11 — 24.11.10 — 10:52

(10)запись макроса включи, тебе ворд расскажет как он это делает

   rarmi

12 — 24.11.10 — 10:54

говорю ж — проблема с адаптацией.
но если вам это не трудно….

   BuHu

13 — 24.11.10 — 10:56

(12)покажи что у тебя в макросе

   rarmi

14 — 24.11.10 — 11:38

Selection.MoveLeft Unit:=wdCharacter, Count:=13, Extend:=wdExtend
   Selection.Font.Bold = wdToggle
   Selection.HomeKey Unit:=wdLine
   Selection.EndKey Unit:=wdLine
   Selection.TypeParagraph
   With ListGalleries(wdBulletGallery).ListTemplates(1).ListLevels(1)
       .NumberFormat = ChrW(61623)
       .TrailingCharacter = wdTrailingTab
       .NumberStyle = wdListNumberStyleBullet
       .NumberPosition = CentimetersToPoints(0.63)
       .Alignment = wdListLevelAlignLeft
       .TextPosition = CentimetersToPoints(1.27)
       .TabPosition = wdUndefined
       .ResetOnHigher = 0
       .StartAt = 1
       With .Font
           .Bold = wdUndefined
           .Italic = wdUndefined
           .StrikeThrough = wdUndefined
           .Subscript = wdUndefined
           .Superscript = wdUndefined
           .Shadow = wdUndefined
           .Outline = wdUndefined
           .Emboss = wdUndefined
           .Engrave = wdUndefined
           .AllCaps = wdUndefined
           .Hidden = wdUndefined
           .Underline = wdUndefined
           .Color = wdUndefined
           .Size = wdUndefined
           .Animation = wdUndefined
           .DoubleStrikeThrough = wdUndefined
           .Name = «Symbol»
       End With
       .LinkedStyle = «»
   End With
   ListGalleries(wdBulletGallery).ListTemplates(1).Name = «»
   Selection.Range.ListFormat.ApplyListTemplateWithLevel ListTemplate:= _
       ListGalleries(wdBulletGallery).ListTemplates(1), ContinuePreviousList:= _
       False, ApplyTo:=wdListApplyToWholeList, DefaultListBehavior:= _
       wdWord10ListBehavior
   Selection.Font.Bold = wdToggle
   Selection.TypeText Text:=»оирроплргпгщрщ»
   Selection.TypeParagraph
   Selection.TypeBackspace
   Selection.TypeParagraph
   Selection.TypeBackspace
   Selection.TypeParagraph
   Selection.Range.ListFormat.RemoveNumbers NumberType:=wdNumberParagraph
End Sub

   rarmi

15 — 24.11.10 — 11:40

и где тут вставка маркера?

   BuHu

16 — 24.11.10 — 11:46

(15) в смысле «Жирным»? — Selection.Font.Bold = wdToggle

   BuHu

17 — 24.11.10 — 11:46

+(16) в 1с это будет Selection.Font.Bold = 1;

   rarmi

18 — 24.11.10 — 11:54

Selection.Font.Bold = wdToggle
я так понимаю — что это выделение текста жирным.
а мне нужен маркер — такая штучка в начале строки.
в смысле где тут вставляется маркер?

   BuHu

19 — 24.11.10 — 12:00

(18) не понял что такое раркер . Открываешь новый документ ворд ->Начать запись макроса -> вставляешь свой «маркер» -> Останавливаешь запись макроса-> Смотришь что написано в макросе.

   BuHu

20 — 24.11.10 — 12:00

+(19)раркер=маркер

   rarmi

21 — 24.11.10 — 12:14

макрос — который выше — и есть нужная запись — со вставкой маркера. Только где там конкретно маркер — не разобрать — потому что видимо много действий доя этого делается.

   rarmi

22 — 24.11.10 — 12:15

Маркированный список — знаешь, что такое?
Всякие точечки, ромбики, кружочки — в начале строки маркированного списка — это и есть маркеры.

  

BuHu

23 — 24.11.10 — 12:18

(22) отсей все что не касается маркера (не создавай таблицы), просто сделай так что б появился маркер

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

То, что я делал, было автоматизировано, но то же самое относится, если вы знаете, что делаете. Имейте в виду, что Bold — это только int, нет логического true/false (по какой-то причине).

Как и в случае с Рикардо, я также отправлю код здесь:

private void InsertMultiFormatParagraph(string psText, int piSize, int piSpaceAfter = 10) {
    Word.Paragraph para = mdocWord.Content.Paragraphs.Add(ref mobjMissing);

    para.Range.Text = psText;
    // Explicitly set this to "not bold"
    para.Range.Font.Bold = 0;
    para.Range.Font.Size = piSize;
    para.Format.SpaceAfter = piSpaceAfter;

    object objStart = para.Range.Start;
    object objEnd = para.Range.Start + psText.IndexOf(":");

    Word.Range rngBold = mdocWord.Range(ref objStart, ref objEnd);
    rngBold.Bold = 1;

    para.Range.InsertParagraphAfter();
}

Очевидно, что если вы пытаетесь отвлечь его еще больше, вы можете добавить параметр для char или string, чтобы вы могли изменить то, что используется для установки жирного начала/остановки.

Одно замечание, которое обсуждалось в комментариях другого потока, состояло в том, что по какой-то причине Bold является только int. Для установки этого значения нет значения bool. Это странно, я знаю.

Моя программа должна генерировать очень простые отчеты в Office .doc формат (не XML), и некоторые части документа должны быть выделены жирным шрифтом. Я искал документацию для определения диапазонов, отчасти это то, из чего мой код извлекается в данный момент. Эта часть документации на самом деле не дает мне достаточно деталей, чтобы реализовать это в моем документе. Вот мой код до сих пор:

object miss = System.Reflection.Missing.Value;
object Visible = true;
object start = 0;

Microsoft.Office.Interop.Word.Application WordApp = new Microsoft.Office.Interop.Word.Application();
Document report = WordApp.Documents.Add(ref miss, ref miss, ref miss, ref miss);

String header = "Bold Header: ";
Range headerRange = report.Range(ref start, ref miss);
headerRange.Text = header;
headerRange.Font.Bold = -1;

String data = "Information underneath the header";
Range dataRange = report.Range();
dataRange.Text = data;
dataRange.Font.Bold = 1;

object filename = "test.doc";

report.SaveAs(ref filename, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss);
object saveChanges = Microsoft.Office.Interop.Word.WdSaveOptions.wdPromptToSaveChanges;
object originalFormat = Microsoft.Office.Interop.Word.WdOriginalFormat.wdWordDocument;
object routeDocument = true;
WordApp.Visible = true;

Это создает документ Word только с текстом **Information underneath the header**, Это простой пример.

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

2012-07-19 15:24

3

ответа

Решение

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

То, что я делал, было автоматизировано, но то же самое применимо, если вы знаете, что делаете. Имейте также в виду, что Bold — только int, здесь нет логического true/false (по какой-то причине).

Что касается превосходного замечания Рикардо, я также выложу здесь код:

private void InsertMultiFormatParagraph(string psText, int piSize, int piSpaceAfter = 10) {
    Word.Paragraph para = mdocWord.Content.Paragraphs.Add(ref mobjMissing);

    para.Range.Text = psText;
    // Explicitly set this to "not bold"
    para.Range.Font.Bold = 0;
    para.Range.Font.Size = piSize;
    para.Format.SpaceAfter = piSpaceAfter;

    object objStart = para.Range.Start;
    object objEnd = para.Range.Start + psText.IndexOf(":");

    Word.Range rngBold = mdocWord.Range(ref objStart, ref objEnd);
    rngBold.Bold = 1;

    para.Range.InsertParagraphAfter();
}

Очевидно, что если вы пытаетесь абстрагировать это еще дальше, вы можете добавить параметр для char или же string так что вы можете изменить то, что используется для установки жирного пуска / остановки.

Стоит отметить, что в комментариях другой ветки обсуждалось, что по какой-то причине Bold является только int. Там нет значения bool для установки этого. Это странно, я знаю.

2012-07-19 16:49

Вы можете просто использовать объект Paragraph для настройки форматирования различных текстовых блоков. Пример кода, как показано ниже:

object DocumentEndIndex = "\endofdoc";
object endDocument = wordDocument.Bookmarks.get_Item(ref DocumentEndIndex).Range;
Paragraph para = wordDocument.Content.Paragraphs.Add(ref endDocument);
para.Range.Text = text;
para.Range.set_Style(ref headingLevel);
// do format the text with para.Range object as you want
para.Range.InsertParagraphAfter();

Надеюсь это поможет.

2012-07-19 16:43

Это старый вопрос, но, поскольку я столкнулся с той же проблемой, и это не помогло мне для изменений в верхнем или нижнем колонтитуле, но помогло мне понять, как это сделать, вот мое решение:

Word.Paragraph p = c2.Range.Paragraphs.Add(ref missing);
p.Range.Text = "your trip at " + sejour.Location;
SetTextColor(p.Range, Word.WdColor.wdColorWhite,0, p.Range.Text.Length - 1);
SetTextSize(p.Range, (float)14, 0, p.Range.Text.Length - 1);
SetTextSize(p.Range, (float)16, p.Range.Text.Length - 2 - sejour.Location.Length, sejour.Location.Length);

public void SetTextColor( Word.Range range, Microsoft.Office.Interop.Word.WdColor color, int start, int length)
{
    Word.Range rng = range;
    rng.Start = range.Start + start;
    rng.End = range.Start + start + length;
    rng.Font.Color = color;
}

public void SetTextSize(Word.Range range, float size, int start, int length)
{
    Word.Range rng = range;
    rng.Start = range.Start + start;
    rng.End = range.Start + start + length;
    rng.Font.Size = size;
}

2015-02-20 11:44

Понравилась статья? Поделить с друзьями:
  • Word жирные границы таблицы
  • Word жирная линия как убрать
  • Word есть а power point
  • Word если столбец вышел за пределы листа
  • Word единицы измерения полей