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

Word interop Не все теги изменяются

28.03.2022, 09:06. Показов 951. Ответов 11

Студворк — интернет-сервис помощи студентам
Приложение меняет теги до <stoimost'> включительно, а оставшиеся не хочет, в чём может быть проблема?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private void button1_Click(object sender, EventArgs e)
        {
            var helper = new WordHelper("шаблон.docx");
            var items = new Dictionary<string, string>
            {
                {"<FIO>", textBox1.Text },
                {"<adress>", textBox2.Text },
                {"<tel>", textBox3.Text },
                {"<mail>", textBox4.Text },
                {"<det>", textBox5.Text },
                {"<nalog>", textBox6.Text },
                {"<stoimost’>", textBox7.Text },
                {"<obosnov>", textBox8.Text },
                {"<xar>", textBox9.Text },
                {"<p>", textBox10.Text },
                {"<audit>", textBox11.Text },
                {"<m>", textBox12.Text },
                {"<zena>", textBox13.Text },
                
            };
            helper.Process(items);
        }
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
class WordHelper { 
        private FileInfo _fileInfo;
        public WordHelper(string filename)
        {
            if (File.Exists(filename))
            {
                _fileInfo = new FileInfo(filename);
            }
            else
            {
                throw new ArgumentException("Файл не найден");
            }
        }
 
        internal bool Process(Dictionary<string, string> items)
        {
            Word.Application app = null;
            try
            {
                app = new Word.Application();
                Object file = _fileInfo.FullName;
 
                Object missing = Type.Missing;
 
                app.Documents.Open(file);
                
                foreach(var item in items)
                {
                    Word.Find find = app.Selection.Find;
                    find.Text = item.Key;
                    find.Replacement.Text = item.Value;
                    Object wrap = Word.WdFindWrap.wdFindContinue;
                    Object replace = Word.WdReplace.wdReplaceAll;
 
 
                    find.Execute(FindText: Type.Missing,
                          MatchCase: false,
                          MatchWholeWord: false,
                          MatchWildcards: false,
                          MatchSoundsLike: missing,
                          MatchAllWordForms: false,
                          Forward: true,
                          Wrap: wrap,
                          Format: false,
                          ReplaceWith: missing, Replace: replace);
                }
                
 
               
                return true;
            }
            catch (Exception ex) { Console.WriteLine(ex.Message);}
 
            finally
            {
                Object newFileName = Path.Combine(_fileInfo.DirectoryName, DateTime.Now.ToString("yyyyMMdd HHmmss") + _fileInfo.Name);
                app.ActiveDocument.SaveAs2(newFileName);
                app.ActiveDocument.Close();
                app.Quit();
            }
            return false;
        }
    }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.03.2022, 09:06
Ответы с готовыми решениями:

Обновить связи в документе Word через Microsoft.Office.Interop.Word
Как обновить связи в документе Word через Microsoft.Office.Interop.Word? Некоторые строки подгружаются в Word из Excel. Задача...

Программирование в WORD средствами Microsoft.Office.Interop.Word и различные ошибки
Здравствуйте! Помогите, пожалуйста при попытке поиска текста через: private void SearchReplace() { Word.Find findObject =...

Считать текст из Word посредством Microsoft.Office.Interop.Word
Необходимо считать форматированный текст из Word посредством Microsoft.Office.Interop.Word. По большей части нужно не сколько само...

11
fly
 Аватар для I can
4953 / 4637 / 844
Регистрация: 13.04.2015
Сообщений: 9,834
28.03.2022, 09:10
Цитата Сообщение от Xmypblu_KoT Посмотреть сообщение
"<stoimost’>"
Возможно из-за апострофа? Может экранировать его?
0
0 / 0 / 0
Регистрация: 23.08.2019
Сообщений: 53
28.03.2022, 09:13  [ТС]
<stoimost' > проходит, а вот obosnov,xar и дальше нет
0
fly
 Аватар для I can
4953 / 4637 / 844
Регистрация: 13.04.2015
Сообщений: 9,834
28.03.2022, 09:20
Попробуйте так сделать: "<stoimost\’>"
0
0 / 0 / 0
Регистрация: 23.08.2019
Сообщений: 53
28.03.2022, 09:36  [ТС]
не помогло, если сделать так то заменяет на "1" {"<obosnov>", "1" } ,а вот с текстбокса брать не хочет, пытался вынести текст в переменную и на неё заменять но тоже не помогло

Добавлено через 7 минут
Кстате, если брать текст с текстбокса до 7 то тег заменяет...
0
fly
 Аватар для I can
4953 / 4637 / 844
Регистрация: 13.04.2015
Сообщений: 9,834
28.03.2022, 09:55
а в catch не проваливается?
0
0 / 0 / 0
Регистрация: 23.08.2019
Сообщений: 53
28.03.2022, 09:58  [ТС]
нет
0
fly
 Аватар для I can
4953 / 4637 / 844
Регистрация: 13.04.2015
Сообщений: 9,834
28.03.2022, 09:58
Цитата Сообщение от Xmypblu_KoT Посмотреть сообщение
нет
Я бы не был так уверен...


Цитата Сообщение от Xmypblu_KoT Посмотреть сообщение
C#
1
Console.WriteLine(ex.Message);
попробуйте это заменить на
C#
1
 MessageBox.Show(ex.Message);
0
0 / 0 / 0
Регистрация: 23.08.2019
Сообщений: 53
28.03.2022, 10:00  [ТС]
Слишком длинный строковый параметр
0
fly
 Аватар для I can
4953 / 4637 / 844
Регистрация: 13.04.2015
Сообщений: 9,834
28.03.2022, 10:05
Лучший ответ Сообщение было отмечено Xmypblu_KoT как решение

Решение

Цитата Сообщение от Xmypblu_KoT Посмотреть сообщение
Слишком длинный строковый параметр
Ну вот и ответ
0
0 / 0 / 0
Регистрация: 23.08.2019
Сообщений: 53
28.03.2022, 10:05  [ТС]
А как пофиксить можно? multiline включен, там же ограничение по символам 37000, у меня 200-300
0
fly
 Аватар для I can
4953 / 4637 / 844
Регистрация: 13.04.2015
Сообщений: 9,834
28.03.2022, 10:07
Наверное в textBox8.Text много текста

Добавлено через 39 секунд
Цитата Сообщение от Xmypblu_KoT Посмотреть сообщение
там же ограничение по символам 37000
Это ограничение Ворда, а не текстбокса.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.03.2022, 10:07
Помогаю со студенческими работами здесь

Работа с таблицей в Word через библиотеку Microsoft.Interop.Word
Здравствуйте, я продвинутый программист.Пишу программу и использованием библиотеки Microsoft.Interop.Word у меня возникло несколько проблем...

Работа с Microsoft.Office.Interop.Word и поиск в Word документе
Здравствуйте, при создании программы для работы со справочником столкнулся с проблемой. Нужно из существующего сформированного документа...

Как получить шапку Word, Microsoft.Office.Interop.Word?
Всем доброго дня! Столкнулся с проблемой, не удается получить шапку doc документа. Само тело вытащить получается а вот с шапкой беда...

Как задать стиль таблицы в Word через библиотеку Microsoft.Office.Interop.Word
Такая проблема пытаюсь задать стиль таблицы для Word. Пишет что элемент с указанным именем не существует. Хотя стиль я взял с официального...

Как задать стиль таблицы в Word через библиотеку Microsoft.Office.Interop.Word
Такая проблема пытаюсь задать стиль таблицы для Word. Пишет что элемент с указанным именем не существует. Хотя стиль я взял с официального...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru