2016-08-18 3 views
0

Ich benutze Apache POI 3.7 und ich versuche eine Zeile zu erstellen, in der einige Zellen ausgerichtet sind und andere Zellen zentriert sind.Mehrere Zellen in derselben Zeile ausrichten (Apache POI)

Ich habe versucht:

if(isNumeric()){ cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER); }else{ cellStyle.setAlignment(XSSFCellStyle.ALIGN_LEFT); }

ich auch versucht:

cellStyle.setAlignment((short)0) , cellStyle.setAlignment((short)1) ...

Wie auch immer, wenn ich Excel-Dokument zu erzeugen, werden alle Zellen in der Zeile werden links ausgerichtet oder zentriert aber nicht gemischt.

Ich weiß nicht einmal, ob es möglich ist, zu tun, was ich versuche.

Danke

Antwort

3

So sieht es aus wie Sie eine einzelne Zelle Stil haben und halten sie zwischen links und mittig ausgerichtet zu verändern. Zellen teilen Stile. Wenn Sie also den Stil für eine Zelle ändern, wird sie für alle Zellen geändert, denen der Stil zugewiesen wurde. Um mehrere allignments zu erhalten, müssen Sie mehrere Stile

Workbook wb = new XSSFWorkbook(); 
Sheet sh = wb.createSheet("Sheet1"); 
CellStyle left = wb.createCellStyle(); 
left.setAlignment(CellStyle.ALIGN_LEFT); 
CellStyle center = wb.createCellStyle(); 
center.setAlignment(CellStyle.ALIGN_CENTER); 

Row r1 = sh.createRow(1); 
Cell c1 = r1.createCell(1); 
c1.setCellStyle(left); 
c1.setCellValue("Left justified text"); 
Cell c2 = r1.createCell(2); 
c2.setCellStyle(center); 
c2.setCellValue(1234); 
Cell c3 = r1.createCell(3); 
c3.setCellStyle(left); 
c3.setCellValue("More Left Justified Text"); 

FileOutputStream fileOut = new FileOutputStream("CellAlignTest.xlsx"); 
wb.write(fileOut); 
wb.close(); 
fileOut.close(); 

Eine zusätzliche Anmerkung hier haben Sie eine begrenzte Anzahl von Arten zu arbeiten, so dass Sie sie teilen, wenn Sie ein großes Blatt erstellen.

+0

Wusste nicht, dass Zellen Stile teilen, Ihr Code hat so funktioniert, wie ich es erwartet hatte! Ich habe auch über Ihre letzte Notiz gelesen und die Grenze für Stile für eine Arbeitsmappe ist 4.000. Danke – Charles

1

Nach dem javadoc für die Zelle .setCellStyle (Cellstyle-Stil) Methode sollte der Stil ein Cellstyle durch den Aufruf der createCellStyle() -Methode auf der Arbeitsmappe erstellt werden. Geben Sie folgendes versuchen:

CellStyle centeredStyle = workbook.createCellStyle(); 
centeredStyle.setAlignment(CellStyle.ALIGN_CENTER); 

CellStyle leftStyle = workbook.createCellStyle(); 
leftStyle.setAlignment(CellStyle.ALIGN_LEFT); 

Sheet sheet = workbook.getSheetAt(0); 
for(Row row : sheet.rowIterator()) { 
    for(Cell cell : row.cellIterator()) { 
     CellStyle cellStyle = (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) ? centeredStyle : leftStyle; 
     cell.setCellStyle(cellStyle); 
    } 
}