Wenn Ihre Tabelle am Ende einer Seite steht, kann dieser Absatz am Ende stehen auf der nächsten Seite, Erstellen einer leeren/leeren Seite.
Ich weiß, dass es eine Problemumgehung dafür gibt, indem man die Schriftart für diesen Absatz auf eine sehr kleine Schriftart einstellt (z. B. 1 Punkt), allerdings kann ich das nur beim Bearbeiten zum Laufen bringen das Dokument über Word, nachdem das Dokument erstellt wurde. Der Versuch, die Schriftgröße dieses Absatzes programmgesteuert mit OpenXML zu ändern, führt nicht zu den erwarteten Ergebnissen.
Die manuelle Problemumgehung ist für meinen Kunden nicht akzeptabel. Gibt es eine Möglichkeit, dies zu beheben?
Hier sind einige Dinge, die ich ausprobiert habe:
1. Löschen des letzten Absatzes:
- Erwartung: Leere Seite würde entfernt
- Realität: Die Datei wurde beschädigt
- Dies ist sinnvoll, da dieser Absatz für die Formatierungsinformationen für die Tabelle benötigt wird.
Code: Select all
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. InnerXML:
Code: Select all
// Font Size
// Font Size
paraToEdit.InnerXML:
Code: Select all
// Unchanged font size
// Changed font size
3. (Versuch) Zusätzlich die RunProperties aus den ParagraphProperties zu holen
Code: Select all
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" });
}