Вставка новых строк в Word с помощью OpenXML

Я использую openxml WordProcessingDocument для открытия шаблона Word и замены заполнителя x1 строкой. Это отлично работает, если мне не нужна строка, содержащая новую строку. Как я могу заменить x1 текстом, который может содержать новые строки, которые распознает слово? Я пробовал n r, но они не работают

просто чтобы объяснить дальше, когда шаблон word открыт, я прочитал его в StreamReader, а затем использовал .Заменить для замены x1.

4 ответов


чтобы вставить новые строки, вы должны добавить Break экземпляр Run.

пример:

run.AppendChild(new Text("Hello"));
run.AppendChild(new Break());
run.AppendChild(new Text("world"));

произведенный XML будет что-то вроде:

<w:r>
  <w:t>Hello</w:t>
  <w:br/>
  <w:t>world</w:t>
</w:r>

вот функция C#, которая возьмет строку, разделит ее на разрывы строк и отобразит ее в OpenXML. Чтобы использовать, создайте экземпляр Run и передайте его в функцию со строкой.

void parseTextForOpenXML( Run run, string textualData )
{
    string[ ] newLineArray = { Environment.NewLine };
    string[ ] textArray = textualData.Split( newLineArray, StringSplitOptions.None );

    bool first = true;

    foreach ( string line in textArray )
    {
        if ( ! first )
        {
            run.Append( new Break( ) );
        }

        first = false;

        Text txt = new Text( );
        txt.Text = line;
        run.Append( txt );
    }

У меня такая же проблема и в моем случае <w:br /> тег работал.


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

как я могу сделать XXX с OpenXML??

в этом случае вы можете использовать мощный Microsoft OpenXML инструмент производительности (также известный как OpenXmlSdkTool). скачать тут.

  1. создать новый документ office
  2. добавьте в документ детали, которые вы хотели бы воспроизведение с помощью OpenXML SDK.
  3. откройте документ office с помощью Microsoft OpenXML инструмент производительности
  4. нажмите "отразить код"
  5. С правой стороны вы увидите теперь документ, отраженный в коде C#.