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

Поиск текста в MS Word с вставкой таблицы

05.02.2019, 08:20. Показов 2605. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть программа которая открывает шаблон ищет в нем метки заменяя на значение переменных, все работает , проблема в следующем, при нахождение в тексте метки {t_subject} нужно стереть метку вставить таблицу(как вставить знаю) и заполнить данными, как найти это место вставки ????

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
 private void ReplaceWordStub(string stubToReplace, string text, Word.Document wordDocument)
        {
            var range = wordDocument.Content;
            range.Find.ClearFormatting();
            range.Find.Execute(FindText: stubToReplace, ReplaceWith: text);
        } // подпрограмма замены на значение переменных
 
 
 
        private void button2_Click(object sender, EventArgs e)
        {
            string pro_id_pledge = Global_class.pro_photo;
 
            var wordApp = new Word.Application();
            wordApp.Visible = true;
            string thisputh = Global_class.puth + @"\contrat_pledge.docx";
 
            var wordDocument = wordApp.Documents.Open(@thisputh);
 
            loadcompany();
            loadpledge(pro_id_pledge);
            loadclient(t_pledge_pro_id_client);
            loaddocument(t_client_pro_id_client);
            loadtarif(t_pledge_pro_id_rate);
            loademployee(t_pledge_pro_id_employee);
            try
            {
                ReplaceWordStub("{t_pledge.date}", t_pledge_pro_data.ToString(), wordDocument);
                ReplaceWordStub("{t_company.actual_adress}", t_company_pro_actual_adress, wordDocument);
                ReplaceWordStub("{to_date}", DateTime.Today.ToShortDateString().ToString(), wordDocument);
                ReplaceWordStub("{t_company.name}", t_company_pro_name, wordDocument);
                ReplaceWordStub("{t_employee}", t_employee_pro_surname+" "+t_employee_pro_name+" "+t_employee_pro_patronymic, wordDocument);
                ReplaceWordStub("{t_client}", t_client_pro_surname + " " + t_client_pro_name + " " + t_client_pro_patronymic, wordDocument);
                ReplaceWordStub("{t_client.birth}", t_client_pro_date_birth.ToShortDateString().ToString(), wordDocument);
                ReplaceWordStub("{t_client.doc}", t_document_pro_tip_documenta, wordDocument);
                ReplaceWordStub("{t_client.doc.series}", t_document_pro_series, wordDocument);
                ReplaceWordStub("{t_client.doc.number}", t_document_pro_number, wordDocument);
                ReplaceWordStub("{t_client.doc.date_of}", t_document_pro_date_of.ToShortDateString().ToString(), wordDocument);
                ReplaceWordStub("{t_client.doc.issued}", t_document_pro_issued, wordDocument);
 
 
                ReplaceWordStub("{t_subject}", t_document_pro_issued, wordDocument);   //  собственно строка
                
 
 
                ReplaceWordStub("{t_pledge.sum_pledge}", t_pledge_pro_sum_pledge.ToString(), wordDocument);
                ReplaceWordStub("{t_pledge.time_pledge}", t_pledge_pro_time_pledge.ToString(), wordDocument);
                ReplaceWordStub("{t_pledge.return}", t_pledge_pro_data.AddDays(t_pledge_pro_time_pledge).ToShortDateString().ToString(), wordDocument);
                ReplaceWordStub("{t_rate.time_delay}", t_rate_pro_time_delay.ToString(), wordDocument);
                ReplaceWordStub("{loan_return}", (t_pledge_pro_data.AddDays(t_pledge_pro_time_pledge + t_rate_pro_time_delay)).ToShortDateString().ToString(), wordDocument);
                ReplaceWordStub("{t_rate.name}", t_rate_pro_name, wordDocument);
                ReplaceWordStub("{t_rate.time_delay}", t_rate_pro_time_delay.ToString(), wordDocument);
                ReplaceWordStub("{t_company.actual_adress}", t_company_pro_actual_adress, wordDocument);
                ReplaceWordStub("{t_company.name}", t_company_pro_name, wordDocument);
                ReplaceWordStub("{t_company.inn}", t_company_pro_inn, wordDocument);
                ReplaceWordStub("{t_company.kpp}", t_company_pro_kpp, wordDocument);
                ReplaceWordStub("{t_company.okpo}", t_company_pro_okpo, wordDocument);
                ReplaceWordStub("{t_company.ogrn}", t_company_pro_ogrn, wordDocument);
                ReplaceWordStub("{t_client}", t_client_pro_surname + " " + t_client_pro_name + " " + t_client_pro_patronymic, wordDocument);
                ReplaceWordStub("{t_client.birth}", t_client_pro_date_birth.ToShortDateString().ToString(), wordDocument);
                ReplaceWordStub("{t_client.doc}", t_document_pro_tip_documenta, wordDocument);
                ReplaceWordStub("{t_client.doc.series}", t_document_pro_series, wordDocument);
                ReplaceWordStub("{t_client.doc.number}", t_document_pro_number, wordDocument);
                ReplaceWordStub("{t_client.doc.date_of}", t_document_pro_date_of.ToShortDateString().ToString(), wordDocument);
                ReplaceWordStub("{t_client.doc.issued}", t_document_pro_issued, wordDocument);
                ReplaceWordStub("{t_client.registration_adres}", t_client_pro_registration_adres, wordDocument);            
 
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
 
            saveFileDialog1.Filter = "docx|*.docx";
            saveFileDialog1.FilterIndex = 1;
            saveFileDialog1.RestoreDirectory = true;
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                wordDocument.SaveAs2(@saveFileDialog1.FileName.ToString());
                wordApp.Visible = true;
            }
   
        }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.02.2019, 08:20
Ответы с готовыми решениями:

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

Выравнивание текста в ячейке таблицы Word
Подскажите как задать расположение текста с левого края в ячейке таблицы документа word средствами vb.net ? Имеется вордовский шаблон с...

Вставка текста или таблицы в WORD
Здравствуйте, уважаемые специалисты! У меня есть задача: необходимо в определенных случаях вставлять небольшой текст или таблицу либо в...

2
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
05.02.2019, 11:11
Лучший ответ Сообщение было отмечено Wolverine_ как решение

Решение

После выполнения Execute в объекте range будет ссылка на Range, в котором найден искомый текст.
1
2 / 2 / 0
Регистрация: 03.02.2013
Сообщений: 126
05.02.2019, 11:41  [ТС]
Всё получилось . Ниже делюсь кодом вдруг кто то будет так же искать (Заполнение таблицы условное для примера):
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
      private void ReplaceWordStub(string stubToReplace, string text, Word.Document wordDocument)
        {
            var range = wordDocument.Content;
            range.Find.ClearFormatting();
            range.Find.Execute(FindText: stubToReplace, ReplaceWith: text);
 
 
            if (stubToReplace == "{t_subject}")
            {
               Word.Table t = wordDocument.Tables.Add(range, 2, 2);
                
                foreach (Word.Row row in t.Rows)
                {
                    foreach (Word.Cell cell in row.Cells)
                    {
                        if (cell.RowIndex == 1)
                        {
                            if (cell.ColumnIndex == 1)
                            {
                                cell.Range.Text = "Наименование";
                                cell.Range.Bold = 1;
                                cell.Range.Font.Name = "Times New Roman";
                                cell.Range.Font.Size = 12;
                                cell.VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
                                cell.Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
                            }
                            else
                            {
                                cell.Range.Text = "Примечание";
                                cell.Range.Bold = 1;
                                cell.Range.Font.Name = "Times New Roman";
                                cell.Range.Font.Size = 12;
                                cell.VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
                                cell.Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
 
                            }
                        }
                        else
                        {
                            cell.Range.Text = cell.RowIndex.ToString();
                        }
                    }
                }
            }
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.02.2019, 11:41
Помогаю со студенческими работами здесь

Word: поиск текста в таблице
Можно ли как-то организовать поиск текста в таблице? Или для этого достаточно обычного поиска текста?

Поиск и замена текста в Word
Коллеги, помогите как определить последовательность цифр в тексте. и если не трудно подскажите где почитать что значат комбинации в...

Поиск текста в документах Word
Есть код ВБА. Он работает .. нигде не могу найти команды!!!! Может кто-то поможет ....Код для ексель ... открывает из выбранной папки файлы...

Поиск и замена текста в word
Как в тексте документа ворда заменить одно слово на другое? Dim DocWord = New Microsoft.Office.Interop.Word.Application() ...

Поиск и редактирование текста в Word
Народ, помогите со следующей проблемкой. Пытаюсь написать код в VBA для обработки документа. Задача такова: нужно искать в тексте...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru