2016-04-01 6 views
0

Ich habe folgenden Beispielcode:Java Apache POI: Standard-Spaltenstil funktioniert nicht für bestehende Werte Einstellung

SXSSFWorkbook wb = new SXSSFWorkbook(); 
    SXSSFSheet sheet = wb.createSheet("sheet"); 
    SXSSFRow row = sheet.createRow(0); 
    SXSSFCell cell = row.createCell(0); 
    cell.setCellValue("value"); 

    XSSFCellStyle cellStyle = (XSSFCellStyle) wb.createCellStyle(); 
    DataFormat fmt = wb.createDataFormat(); 
    cellStyle.setDataFormat(fmt.getFormat("@")); 
    sheet.setDefaultColumnStyle(0, cellStyle); 

    FileOutputStream out; 
    try { 
     out = new FileOutputStream("filename.xlsx"); 
     try { 
      wb.write(out); 
      out.close(); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 

Es erstellt erfolgreich eine Excel-Datei und legt den Wert „Wert“ in ihm (Spalte A, Reihe 1). Ich möchte den Spaltenstil für Spalte A auf "@" (= Text) setzen, was sehr gut funktioniert, aber nicht für die Zelle mit dem bereits vorhandenen Wert "value". Alle anderen leeren Zellen in Spalte A werden erfolgreich auf den Stil "@" gesetzt. Ich muss mit SXSSFWorkbook arbeiten, da ich riesige Excel-Dateien erstelle.

+1

Wenn eine Zelle bereits einen Wert enthält, hat sie bereits einen Stil. Also, hört sich so an, als würde es sich so verhalten wie erwartet! – Gagravarr

+0

Das verstehe ich nicht wirklich, weil ich versucht habe, den Stil vor und nach dem Setzen des Wertes zu setzen. Das Ergebnis ist das gleiche. Wenn es nicht möglich ist, Stil für Spalten mit Werten festzulegen, warum existiert die Funktionalität überhaupt? Sobald ein Wert eingestellt ist, ist der Stil verloren. – clex

+1

Siehe http://stackoverflow.com/questions/34463072/i-want-to-arrange-entire-cells-in-specific-column-instead-of-individual-cells/34469637#34469637. POI selbst wendet den DefaultColumnStyle nicht auf neue Zellen in dieser Spalte an. Es sollte s = "1", wobei 1 die Stilnummer ist, im entsprechenden c-Tag von Sheet1.xml gesetzt werden. –

Antwort

1

Warum stellen Sie nicht einfach den Zellenstil ein, bevor Sie den Wert einfügen?

+0

Gleiches Ergebnis! :-( – clex