Heim >Java >javaLernprogramm >Wie kann das Problem des POI-Imports reiner Zahlen und anderer Formate über Java gelöst werden?
Wenn Sie POI zum Exportieren von Excel verwenden und die Zelle auf reine Zahlen eingestellt ist, werden die Eingabedaten automatisch in wissenschaftlicher Notation angezeigt, sobald sie zu groß sind, was zu einem Fehler beim Import führt Die Lösung besteht darin, die Datei im Hintergrund zu exportieren. Die erzwungene Konvertierung von Zellattributen kann perfekt gelöst werden und eignet sich auch für Ausnahmen beim Datenimport, die durch andere Zellformate verursacht werden
Heute erhielt ich eine Anfrage von der Geschäftsseite, in der es hieß: Es handelt sich um den aus Excel importierten Betrag, und alles ist gerundet. Dann habe ich den Code überprüft: Ich war zuerst geblendet und konnte es nicht ertragen. Aber denken Sie darüber nach, als Programmierer können Sie sich nicht weigern, den Menschen zu dienen. Also habe ich es debuggt. Ich war wirklich faul und wollte den Code nicht direkt verfolgen, also ging ich zum Debuggen ... Der GrundIch habe den spezifischen Grund gefunden:Cell cellCode = r.getCell(1); cellCode.setCellType(CellType.STRING); info.setCode(r.getCell(1).getStringCellValue());
if (xssfRow.getCellType() == Cell.CELL_TYPE_NUMERIC) { DecimalFormat format = new DecimalFormat("#"); double num = xssfRow.getNumericCellValue(); String res = format.format(num); //…… }DecimalFormatDecimalFormat ist eine konkrete Unterklasse von NumberFormat, die zum Formatieren von Dezimalzahlen verwendet wird. Helfen Sie dabei, Zahlen so schnell wie möglich so zu formatieren, wie Sie es benötigen. DecimalFormat enthält ein Muster und eine Reihe von Symbolen. Die DecimalFormat-Klasse basiert hauptsächlich auf zwei Platzhaltersymbolen, # und 0, um die Zahlenlänge anzugeben. Symbole wie „####.000“. Dieser Modus bedeutet, dass es vier Ziffern vor dem Komma gibt. Wenn nicht genug davon vorhanden sind, lassen Sie sie leer. Wenn nicht genügend Ziffern vorhanden sind, füllen Sie sie mit 0 auf.
Symbolbedeutung:
0 eine Zahl
if (xssfRow.getCellType() == Cell.CELL_TYPE_NUMERIC) { DecimalFormat format = new DecimalFormat("#"); double num = xssfRow.getNumericCellValue(); String res = format.format(num); // num 和 res 的取值差不多。 如: 50.00 : num 为 50.00,res 为 50; 123.23, num 为123.23, res为123.23 System.err.println(num + "--" + res); //…… }
Das obige ist der detaillierte Inhalt vonWie kann das Problem des POI-Imports reiner Zahlen und anderer Formate über Java gelöst werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!