Heim > Java > javaLernprogramm > Hauptteil

Wie kann das Problem des POI-Imports reiner Zahlen und anderer Formate über Java gelöst werden?

PHPz
Freigeben: 2023-05-09 20:13:06
nach vorne
1476 Leute haben es durchsucht

Poi importiert reine Zahlen und andere Probleme

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 Grund

Ich habe den spezifischen Grund gefunden:

Cell cellCode = r.getCell(1);
cellCode.setCellType(CellType.STRING);  
info.setCode(r.getCell(1).getStringCellValue());
Nach dem Login kopieren

Im obigen Code ist die Zahl als Ganzzahl formatiert . Natürlich ist es kein Problem, wenn Sie den Wert direkt erhalten.

lautet wie folgt:

if (xssfRow.getCellType() == Cell.CELL_TYPE_NUMERIC) {
    DecimalFormat format = new DecimalFormat("#");
    double num = xssfRow.getNumericCellValue();
    String res = format.format(num);
    //……
}
Nach dem Login kopieren

DecimalFormat

DecimalFormat 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
  • # eine Zahl, außer 0
  • Platzhalter für Dezimaltrennzeichen
  • , Platzhalter für Gruppierungstrennzeichen
  • – Standardmäßiges negatives Präfix .
  • % mit 100 multipliziert und als Prozentsatz angezeigt
  • Beispiel:
  • 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);
        //……
    }
    Nach dem Login kopieren

    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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage