2016-09-19 3 views
0

Ich erstelle eine Excel-Datei mit ColdFusion und POI-Arbeitsmappe. Die Datei ist großartig erstellt, aber ich habe Zellen, die numerische Werte enthalten und müssen als Zahlen für SUM und andere Funktionen gespeichert werden, um ordnungsgemäß zu funktionieren.ColdFusion - POI Excel-Arbeitsmappenformat als Nummer

Ich möchte Code aufrufen, nachdem die Daten für das Excel-Blatt hinzugefügt wurden, das im Grunde die Daten überschleifen wird. Wenn der Wert numerisch ist, legen Sie das Datenformat als numerisch fest. Auf diese Weise kann ich, wenn ich die Excel-Datei öffne, eine SUMME oder was auch immer in dieser Datenspalte ausführen.

Unten ist, was ich bisher versucht habe, und es funktioniert ", weil alle Zellen die Hintergrundfarbe #EBEBEB haben, aber sie haben immer noch die Warnung, die sagt" Nummer als Text gespeichert "wie unten zu sehen. Wie kann ich das beheben?

// Create our dataFormat object 
df = poiWorkbook.createDataFormat(); 
// Create our new style 
formatNumber = poiWorkbook.createCellStyle(); 
formatNumber.setFillPattern(formatEvenRowRightAlignStyle.SOLID_FOREGROUND); 
formatNumber.setAlignment(formatNumber.ALIGN_RIGHT); 
XSSFColor = createObject("java", "org.apache.poi.xssf.usermodel.XSSFColor"); 
formatNumber.setFillForegroundColor(XSSFColor.init(Color.decode("##EBEBEB")));  
formatNumber.setDataFormat(df.getFormat("0.00")); 
// Loop over the data and apply the format 
for (x=0;x<rowCount;x++) { 
    for (y=0;y<colCount;y++) { 
     poiSheet.getRow(x).getCell(y).setCellStyle(formatNumber);   
    } 
} 

enter image description here

+0

* Anrufcode nach dem Hinzufügen der Daten * Warum? Es ist möglich, aber es wäre einfacher und weniger fehleranfällig, während des Auffüllens des Blattes zu formatieren. – Leigh

+0

@Leigh - Nun, der Grund ist, weil ich eine CF-Abfrage mit all meinen Daten erstellen und dann mit der SpreadsheetAddRows (Sheet, Query) -Methode hinzufügen. – Phil

+0

@Leigh - nachdem ich alle Daten hinzugefügt habe, gehe ich dann über die Arbeitsmappe und wende die Formatierung an. – Phil

Antwort

1

(von Kommentaren Promoted ...)

Anruf Code nach den Daten

Gibt es Gründe, warum hinzugefügt? Während es möglich ist, ist es einfacher und weniger fehleranfällig, während des Auffüllens des Blattes zu formatieren. Angenommen, der Datentyp der Abfrage-Spalte ist numerisch (nicht varchar oder so), sollten Sie nach dem Hinzufügen der Abfragedaten SpreadsheetFormatColumn für diese Spalte aufrufen können.

Nachdem gesagt, die Tatsache, dass Sie erhalten "Nummer als Text gespeichert" Warnungen in erster Linie macht mich wundern über den Datentyp Ihrer Abfrage Spalte. IIRC, spätere Versionen von CF sollten numerische Spalten erkennen, wenn SpreadsheetAddRows verwendet wird, und ein numerisches Format auf diese Spalten anwenden automatisch. Ist es möglich, dass Ihre Abfragespalte als Zeichenfolge statt als numerischer Typ formatiert wird? Das würde die Ergebnisse erklären. Die Lösung besteht darin, die Spalte innerhalb der Datenbankabfrage in einen numerischen Typ umzuwandeln.