Если ваша таблица находится в конце страницы, этот абзац может оказаться на следующей странице создаем пустую/пустую страницу.
Я знаю, что есть обходной путь, установив очень маленький шрифт для этого абзаца. (например, 1 балл), однако я могу заставить это работать только при редактировании документ через Word после создания документа. Попытка изменить размер шрифта этого абзаца программным способом с помощью OpenXML не дает ожидаемых результатов.
Обходной путь вручную неприемлем для моего клиента. Есть ли способ это исправить?
Вот что я пробовал:
1. Удаление последнего абзаца:
- Ожидание: пустая страница будет удалена.
- Реальность: файл поврежден.
- Это имеет смысл, поскольку этот абзац необходим для форматирования информации в таблице.
Код: Выделить всё
OpenXML.Table lastTable = oNewReportDoc.MainDocumentPart.Document.Body
.Descendants()
.Last();
OpenXML.Paragraph paraToEdit = lastTable.NextSibling();
List runProps = paraToEdit.Descendants().ToList();
foreach (RunProperties rp in runProps)
{
rp.RemoveAllChildren();
rp.AddChild(new FontSize() { Val = "1" });
}
paraToEdit. ВнутреннийXML:
Код: Выделить всё
// Font Size
// Font Size
paraToEdit.InnerXML:
Код: Выделить всё
// Unchanged font size
// Changed font size
p>
3. (Попытка) дополнительно получить RunProperties из ParagraphProperties
Код: Выделить всё
OpenXML.Table lastTable = oNewReportDoc.MainDocumentPart.Document.Body
.Descendants()
.Last();
OpenXML.Paragraph paraToEdit = lastTable.NextSibling();
List runProps = paraToEdit.Descendants().ToList();
List
paraProps = paraToEdit.Descendants().ToList();
foreach(ParagraphProperties pp in paraProps)
{
// I also tried using Descendents here, but both return null
RunProperties addRunProps = pp.GetFirstChild();
runProps.Add(addRunProps); // Nothing gets added
}
foreach (RunProperties rp in runProps)
{
rp.RemoveAllChildren();
rp.AddChild(new FontSize() { Val = "1" });
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... in-documen