OpenXML вставляет раздражающий возврат каретки вверху документа или перед таблицей - PullRequest
0 голосов
/ 19 ноября 2018

Я вставляю таблицу в текстовый документ, где документ не содержит ничего, кроме заголовка:

using (var doc = WordprocessingDocument.Open(targetfile, true))
{
    var body = doc.MainDocumentPart.Document.Body;
    var table = new Table();

    foreach (var package in consignment.Packages)
    {
        // Build the table rows here
    }

    doc.MainDocumentPart.Document.Append(table);
    doc.MainDocumentPart.Document.Save();
    doc.Save();
}

Работает хорошо, но когда я открываю документ, я вижу, что есть возврат кареткив начале документа, поэтому я должен удалить это, чтобы удалить пробел:

enter image description here

Раздражающее пространство выделено желтым цветом, с нижнейзаголовка выше и моей таблицы ниже.

Как я могу заставить OpenXML этого не делать?Т.е. вставьте таблицу прямо вверху документа, а не после возврата каретки

Обратите внимание, что возврата возврата каретки нет в шаблоне docx

1 Ответ

0 голосов
/ 19 ноября 2018

Причина, по которой таблица не находится вверху документа, заключается в следующем: 1) документ всегда содержит, как минимум, один абзац и 2) таблица добавляется к документу (то есть"в конце").

Вместо этого вставьте таблицу перед первым абзацем, что-то вроде этого:

var body = doc.MainDocumentPart.Document.Body;
var table = new Table();

foreach (var package in consignment.Packages)
{
    // Build the table rows here
}
Paragraph firstPara = doc.Body.Descendants<Paragraph>().First();
body.InsertBefore(table, firstPara);

Обратите внимание, что после таблицы будет знак абзаца - этотребуется Word для хранения информации о таблице.(В основном это местоположение на странице.)

...