Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/47: Рейтинг темы: голосов - 47, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 21.11.2014
Сообщений: 52

Межстрочный интервал в Word

14.06.2017, 16:16. Показов 10168. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! помогите пож-та разобраться, приложение, которое создает новый документ Word, и в нем добавляет текст. По умолчанию интервал после абзаца 10 pt. Так вот как мне программный кодом изменить межстрочный интервал?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.06.2017, 16:16
Ответы с готовыми решениями:

Как уменьшить межстрочный интервал в ListView
Решил попробовать реализовать Drag And Drop, но TreeView плохо справляется с выделением узла по MouseDown, а в ListBox нельзя менять цвет...

Можно ли задать межстрочный интервал для Label
Всем доброго дня Можно ли задать межстрочный интервал для Label в WinForms? Что-то вроде line-height в CSS. Когда длинный текст в...

Почему межстрочный интервал стал больше, хотя тексты с одного и того же сайта [Word 2016]
В Word скопировал 3 абзаца, все с разных web-страниц, но сайт один и тот же. А когда взял ещё 4-й абзац, уже с другой страницы сайта,...

17
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
14.06.2017, 16:33
покажи код. нужно менять настройки абзаца, куда вставляешь.
0
0 / 0 / 0
Регистрация: 21.11.2014
Сообщений: 52
14.06.2017, 16:41  [ТС]
С этим я разобрался.
C#
1
2
3
4
5
6
7
8
9
10
11
12
            winword.Selection.TypeParagraph();           
            winword.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;
            winword.Selection.Paragraphs.SpaceAfter = 0;
            winword.Selection.Paragraphs.Space1(); // вот этот фрагмент ставит ординарный интервал
            winword.Selection.Font.Size = 6;       
            winword.Selection.TypeText("Штрихкод        |Сумма " + Environment.NewLine);
            int n = s_arr.Length;
            for (int i = 0; i < n; i++)
            {
                winword.Selection.TypeText(s_arr[i]);
                winword.Selection.TypeText(s);
            }
теперь мне нужно разбить полученный текст на колонки, не подскажите?
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
14.06.2017, 16:42
Именно колонки не таблица?
0
0 / 0 / 0
Регистрация: 21.11.2014
Сообщений: 52
14.06.2017, 16:44  [ТС]
да на колонки, на 5 колонок, это возможно программным кодом сделать?

Добавлено через 1 минуту
C#
1
2
3
4
5
            for (int i = 0; i < n; i++)
            {
                winword.Selection.TypeText(s_arr[i]);
                winword.Selection.TypeText(s);
            }
Здесь у меня печатается массив, вот этот массив и нужно разбить на колонки
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
14.06.2017, 22:55
zagmysa, всё-таки мне кажется, тебе нужна таблица, а не колонки. Покажи, что хочешь получить в результате.
0
0 / 0 / 0
Регистрация: 21.11.2014
Сообщений: 52
15.06.2017, 08:42  [ТС]
Вот скрин
Миниатюры
Межстрочный интервал в Word  
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
15.06.2017, 09:25
Да, действительно колонки. Они задаются через PageSetup документа:
Visual Basic
1
2
3
4
5
6
7
With ActiveDocument.PageSetup.TextColumns
    .SetCount NumColumns:=5
    .EvenlySpaced = True
    .LineBetween = False
    .Width = CentimetersToPoints(4.14)
    .Spacing = CentimetersToPoints(1.25)
End With
Всё довольно очевидно.
0
0 / 0 / 0
Регистрация: 21.11.2014
Сообщений: 52
15.06.2017, 10:05  [ТС]
Понятно, а как вот все это перевести на C#?
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
15.06.2017, 10:21
Точно так же
C#
1
2
3
4
5
6
var textColumns = doc.PageSetup.TextColumns;
textColumns.SetCount(NumColumns:5);
textColumns.EvenlySpaced = true;
textColumns.LineBetween = false;
textColumns.Width = winword.CentimetersToPoints(4.14);//ширина колонки.
textColumns.Spacing = winword.CentimetersToPoints(1.25);//Расстояние между колонками
doc — это твой документ
0
0 / 0 / 0
Регистрация: 21.11.2014
Сообщений: 52
15.06.2017, 10:54  [ТС]
C#
1
2
3
4
textColumns.EvenlySpaced = true; // пишет что не удается преобразовать тип bool в int
textColumns.LineBetween = false; // пишет что не удается преобразовать тип bool в int
textColumns.Width = winword.CentimetersToPoints(4.14);//пишет что не удается преобразовать тип double в float
textColumns.Spacing = winword.CentimetersToPoints(1.25);//пишет что не удается преобразовать тип double в float
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
15.06.2017, 11:11
zagmysa, ну немного подумать можно?
C#
1
2
3
4
textColumns.EvenlySpaced = 1;
textColumns.LineBetween = 0;
textColumns.Width = (float)winword.CentimetersToPoints(4.14f);
textColumns.Spacing = (float)winword.CentimetersToPoints(1.25f);
0
0 / 0 / 0
Регистрация: 21.11.2014
Сообщений: 52
15.06.2017, 11:23  [ТС]
Все понятно, спасибо! еще один вопрос как применить разрыв раздела? а то вот эти колонки у меня применяются на весь документ. а там есть шапка документа и еще после колонок есть другие записи.
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
15.06.2017, 11:43
Selection.InsertBreak
0
0 / 0 / 0
Регистрация: 21.11.2014
Сообщений: 52
15.06.2017, 13:56  [ТС]
у меня по прежнему колонки делается на весь документ, как это исправить?
C#
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
Word.Application wordApp = new Word.Application();
            Word.Document wordDoc;
            Word.Paragraph wordParag;
            object missing = Missing.Value;
            wordDoc = wordApp.Documents.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing); 
              //создаём документ Word
            wordApp.Visible = true;
            wordDoc.PageSetup.LeftMargin = wordApp.CentimetersToPoints((float)1.5);
            
            foreach (Word.Section section in wordDoc.Sections)    //Добавление верхнего колонтитула
            {
               // Word.Sections.PageSetup.OddAndEvenPagesHeaderFooter = 1;              
                Word.Range headerRange = section.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
                headerRange.Fields.Add(headerRange, Word.WdFieldType.wdFieldPage);
                headerRange.ParagraphFormat.Alignment =Word.WdParagraphAlignment.wdAlignParagraphCenter;
                headerRange.Font.ColorIndex = Word.WdColorIndex.wdBlack;
                headerRange.Font.Size = 8;
                headerRange.Text = 
                    "Реестр № "+ N_reestr +" от " + D_reestr ;
            }
             string s = " " + Environment.NewLine; 
 
            object oType;
            oType = Word.WdBreakType.wdSectionBreakContinuous;
            wordApp.Selection.InsertBreak(ref oType);
 
            object unit;
            object extend;            
            unit = Word.WdUnits.wdStory;
            extend = Word.WdMovementType.wdMove;
            wordApp.Selection.HomeKey(ref unit, ref extend);
            wordApp.Selection.Font.Name = "Times New Roman";
            wordApp.Selection.Font.Size = 12;
            wordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
            wordApp.Selection.TypeText("Реестр № " + N_reestr + " от " + D_reestr + "абонентов ");
            wordApp.Selection.TypeParagraph();
 
            wordParag = wordDoc.Paragraphs.Add(Type.Missing);
            wordApp.Selection.InsertBreak(ref oType);
 
            wordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;
            wordApp.Selection.Paragraphs.SpaceAfter = 0;
            wordApp.Selection.Paragraphs.Space1();
            wordApp.Selection.Font.Size = 5;
 
            wordApp.Selection.PageSetup.TextColumns.SetCount(5);          
            var textColumns = wordDoc.PageSetup.TextColumns;
            textColumns.SetCount(NumColumns: 5);
            textColumns.EvenlySpaced = -1;
            textColumns.LineBetween = 0;
            textColumns.Width = (float)wordApp.CentimetersToPoints(3.53f);//ширина колонки.
            textColumns.Spacing = (float)wordApp.CentimetersToPoints(0.2f);//Расстояние между колонками
            
            int n = s_arr.Length;
            for (int i = 0; i < n; i++)
            {
                wordApp.Selection.TypeText(s_arr[i]);
                wordApp.Selection.TypeText(s);
            }
 
            wordApp.Selection.InsertBreak(ref oType);
0
0 / 0 / 0
Регистрация: 21.11.2014
Сообщений: 52
15.06.2017, 14:01  [ТС]
вот так=((
Миниатюры
Межстрочный интервал в Word  
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
15.06.2017, 14:17
zagmysa, ага, у тебя несколько разделов. Значит, настройки нужно применять к текущему разделу.
вот это
C#
1
var textColumns = doc.PageSetup.TextColumns;
Меняем на раздел, где находится курсор:
C#
1
var textColumns = wordapp.Selection.Sections.First.PageSetup.TextColumns;
P.S. Type.Missing можно опустить, они идут по умолчанию.
ref тоже можно опустить. Вот это
C#
1
2
3
object oType;
oType = Word.WdBreakType.wdSectionBreakContinuous;
wordApp.Selection.InsertBreak(ref oType);
можно записать в одну строку:
C#
1
wordApp.Selection.InsertBreak(Word.WdBreakType.wdSectionBreakContinuous);
и т.д.
А вообще такой документ не нужно формировать с нуля. Нужно сделать шаблон с разметкой (dot/dotx) и на основе этого шаблон создавать новый документ, заполняя нужные места. Места можно помечать закладками, а можно через поля и свойства документа.
0
0 / 0 / 0
Регистрация: 21.11.2014
Сообщений: 52
15.06.2017, 15:17  [ТС]
Спасибо большое! да я думал над тем чтоб создать шаблон!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.06.2017, 15:17
Помогаю со студенческими работами здесь

Межстрочный интервал
Как увеличить межстрочный интервал в текстовом поле? Я пробовал изменение шрифта, но это не подходит, так как хотелось бы использовать...

Межстрочный интервал
Здравствуйте! Есть навязчивая идея прижать строки по вертикали, но стандартные средства bootstrap 4 (p и m) этого не позволяют, что можно...

Интервал не меняется межстрочный
Здравствуйте, помогите чайнику. В моей теме вордпресс стоит интервал межстрочный 1.9, а я хочу 1.5. Начитала в интернете и залезла в...

Word2007 межстрочный интервал
Подскажиет как вылечить такой глюк в ворде2007. Нажимаю в разделе Абзац пимпу &quot;Междустрочный интерсвал&quot;, мне ворд выдаёт сообщение...

Межстрочный интервал в печатных формах
Добрый день. В 1С была добавленная печатная форма Акта. Подскажите пожалуйста, можно ли как то изменить в данной печатной форме, в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru