C# Замена текста в строке меняет форматирование абзаца в Word — сборки взаимодействияC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 C# Замена текста в строке меняет форматирование абзаца в Word — сборки взаимодействия

Сообщение Anonymous »

У меня есть код, в котором я перебираю каждый абзац, присутствующий в документе Word, с использованием первичных сборок взаимодействия. По сути, я извлекаю весь текст из каждого абзаца в строку. Затем я ищу в этой строке конкретные ключевые слова/фразы. Если он присутствует, он заменяется чем-то другим. Затем абзац вставляется обратно в документ.

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

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

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

Код: Выделить всё

using Word = Microsoft.Office.Interop.Word
а затем следующий код

Код: Выделить всё

Word.Application app = new Word.Application();
Word.Document doc = app.Documents.Open(filePath, ReadOnly: false);
После открытия документа я сделал следующее:

Код: Выделить всё

try
{
int totalParagraphs = document.Paragraphs.Count;
string final;
for (int i = 1; i  1)
{
Regex regex = new Regex(findText);
final = regex.Replace(temp, replaceText);
if (final != temp)
{
document.Paragraphs[i].Range.Text = final;

}
}
}
} catch (Exception) { }
Необходимо отметить, что у меня есть оператор if с «temp.Length > 1». Я заметил, что если нет ничего, кроме пустой строки, она все равно считается абзацем, а длина текста внутри этого абзаца равна единице. При работе с пустыми строками это фактически снова добавляет дополнительную строку при вставке ее обратно, даже если никаких замен не было сделано. Поэтому, чтобы бороться с этим, я просто использовал это, чтобы убедиться, что в абзаце есть хотя бы одна буква, а не просто пустая строка. Таким образом, между абзацами не добавляются дополнительные пустые строки.

Подробнее здесь: https://stackoverflow.com/questions/450 ... rd-interop
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Word Interop меняет текст абзаца перед таблицей
    Anonymous » » в форуме C#
    0 Ответы
    48 Просмотры
    Последнее сообщение Anonymous
  • Автоматически загружать панель задач во вновь созданном документе Word из существующего документа Word в проекте Word, д
    Anonymous » » в форуме C#
    0 Ответы
    155 Просмотры
    Последнее сообщение Anonymous
  • Автоматически загружать панель задач во вновь созданном документе Word из существующего документа Word в проекте Word, д
    Anonymous » » в форуме Jquery
    0 Ответы
    108 Просмотры
    Последнее сообщение Anonymous
  • Fastapi Endpoint Stream LLM Вывод Word Word Word
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Fastapi Endpoint Stream LLM Вывод Word Word Word
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»