Вставка новых строк в Word с использованием OpenXML - PullRequest
51 голосов
/ 20 мая 2010

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

Просто для дальнейшего объяснения, когда шаблон слова открывается, я считываю его в StreamReader, а затем использую .Replace для замены x1.

Ответы [ 4 ]

84 голосов
/ 20 мая 2010

Чтобы вставить новые строки, вы должны добавить экземпляр 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>
23 голосов
/ 08 октября 2011

Вот функция 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 );
    }
10 голосов
/ 29 марта 2012

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

8 голосов
/ 02 декабря 2014

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

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

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

  1. Создать новый офисный документ
  2. Добавьте части к документу, которые вы хотите воспроизвести с помощью OpenXML SDK.
  3. Открытие офисного документа с помощью инструмента повышения производительности Microsoft OpenXML
  4. Нажмите «Отразить код»
  5. Справа вы увидите документ, отраженный в коде C #.
...