2014-02-11 13 views
5

Hallo,POI Java Excel-Lösung - Einrückungen Wert

Es ist meine erste Erfahrung in der Arbeit mit POI (Java Excel-Lösung) und ich versuche, die Vertiefung in einer der Reihen bis 17, wie unten zu setzen:

CellStyle style = repSheetPositions.getRow(2).getCell(0).getCellStyle(); 

Wenn ich den Wert der Einbuchtung überprüfen ist:

short a = style.getIndention(); 

a = 15

Nachdem ich ändern Sie den Wert auf:

repSheet.getRow(2).getCell(0).getCellStyle().setIndention((short) 17); 

und diesmal ist der Wert:

short a = style.getIndention(); 

a = 1

Könnten Sie mir bitte helfen?

Vielen Dank!

Antwort

6

Das Problem besteht darin, dass Excel 2003 ein Limit für die maximale Einzug für eine Zelle hat. Gemäß this article ist die maximale Einrückung von Excel für eine Zelle 15.

Der maximale Einzugswert Sie verwenden können, ist 15.

Die HSSFCellStyle Klasse muss diese in Rechnung zu tragen nehmen von Ihrem Wert zu nehmen und den Rest zu halten, wenn sie von 16 geteilt wird. Dies sind die Ausgänge I mit verschiedenen Eingängen erhalten:

15 => 15 
16 => 0 
17 => 1 
18 => 2 
31 => 15 
32 => 0 

Wenn jedoch ein XSSFCellStyle mit (für XLSX-Arbeitsmappen, Excel 2007+), dieses Problem verschwindet. Mit einem XSSFCellStyle kann ich 17 setzen und 17 zurückbekommen.

Wenn Sie Excel 2003 und vorher (.xls) verwenden, können Sie nichts tun. Es ist ein Excel-Limit. Excel 2007+ unterstützt jedoch Einrückungen, die größer als 15 sind. Die Problemumgehung besteht darin, eine .xlsx-Arbeitsmappe zu verwenden, sodass Apache POI eine XSSFCellStyle verwendet, die setIndention(short (17)) ordnungsgemäß unterstützt.

+0

ausgezeichnet! vielen dank rgettman! das funktioniert gut für mich – user1881185