Spaltenbreite einer Tabelle in XWPFTableCell (docx) festlegen

8

Ich erzeuge eine Docx-Datei mit Apache-Poi. In der Worddatei füge ich Tabellen hinzu, deren Spalten eine Breite haben, die ich gerne fix sehen würde.

Zur Zeit verwende ich die hier beschriebene Technik: Ссылка

Dies bedeutet im Grunde, dass

eingestellt wird %Vor%

für jede Zelle dieser Spalte.

Das Problem ist, dass Open Office die Werte, die ich auf die Spaltenbreite einstelle, anders interpretiert, während die Datei in MS Word perfekt geöffnet wird. Während MS Word scheinbar den 20sten Punkt als Einheiten annimmt, scheint Open Office stattdessen Punkte zu verwenden und daher sind alle Spalten 20 Mal breiter, wenn ich das generierte Dokument in OO öffne.

Normalerweise, wenn ich etwas Ungewöhnliches in der generierten Ausgabe sehe, entpacke ich die docx Datei, sehe was der Wert sein soll und ändere meinen Code. Offenes Büro scheint jedoch nicht in der Lage zu sein, nach docx zu speichern. Daher kann ich den Wert in OO nicht ändern und überprüfen, ob Word das Dokument immer noch korrekt interpretiert, um eine anwendungsübergreifende Lösung zu finden.

Irgendeine Idee, wie ich die Breite der Tabellenspalte so einstelle, dass sowohl OO als auch MS Wordt es gleich interpretiert?

    
Yves V. 18.11.2013, 10:51
quelle

4 Antworten

8

Antwort aus Frage extrahiert:

Es wurde kürzlich darauf hingewiesen, dass LibreOffice in der Lage ist, nach docx zu speichern. Durch Ändern der generierten Datei und Zurückspeichern und Dekompilieren des Ergebnisses konnte das Problem behoben werden.

Der Schlüssel besteht darin, zuerst eine explizite Breite in die Tabelle einzugeben. Word scheint sich nicht um seine Anwesenheit zu kümmern, und OpenOffice / LibreOffice kann die Tabelle korrekt rendern.

Nach der Erstellung der Tabelle habe ich Folgendes getan:

%Vor%     
Deduplicator 02.03.2015 23:15
quelle
5

Berühren Sie keine einzelnen Zellen. Fügen Sie ein GRID hinzu:

%Vor%

Das Raster legt Breiten für ganze Spalten fest. Sie müssen keine Zyklen ausführen, um für jede Zelle eine Breite festzulegen. Es funktioniert in LibreOffice und GoogleDocs.

Um die eingestellte Breite auch in MS Word zu sehen, können Sie die Breite der Zellen in der ersten Zeile einstellen:

%Vor%     
nEraquasAr 03.03.2016 06:34
quelle
1

Beim Erstellen der Tabelle wird das Layout standardmäßig auf "auto" gesetzt, daher wird die Breite der Zelle immer größer, um der Länge der Zeichenfolge zu folgen. Laut OpenXML-Markup sieht es so aus %Code%
Die Lösung ist das Layout fixed ein und die einzelnen Spaltenlänge einzustellen w:tblPr w:tblLayout w:type="auto"

Hier ist der Poi-Code zum Einstellen des Tabellenlayouts:

%Vor%

So legen Sie die individuelle Breite fest:

%Vor%

Säulenlängen sind in Zwanzigstel eines Punktes (DXA) oder 1/1440 Inch.

    
sassyshin 21.12.2016 08:40
quelle
0

Dies ist ein großes und sehr heikles Element. Ich löste es mit dieser eigenen generischen Methode zum Festlegen der Breite einer Tabellenzelle.

%Vor%     
Rahul khanvani 20.06.2017 10:02
quelle