4

Ich habe ein Projekt in Yii2, das PHPExcel-Bibliothek zum Lesen einer Excel-Datei verwendet. Ich habe eine Transaktions-ID Spalte, die Daten in Allgemeine Format Zelle enthalten. Screen meiner Excel-Datei: enter image description herePHP: Wie kann ich Daten als String-Format aus Excel-Daten mit wissenschaftlicher Notation/exponentiellem Format erhalten?

Sie oben sehen, wenn ich Eingabe 15 Zeichen der Nummer und legte zwei Punkte in seinem Inneren. Es wird als Nummer angezeigt.

Erste Ex: Input => 800.003.151476962 in Zelle zeigte als image und in Formula Bar zeigte als image

Aber wenn Eingang 15 Zeichen der Nummer ohne Punkte nach innen, es wird als Scientific Notation/Exponential angezeigt.

Zweite Ex: Input => 800003151476925 in Zelle zeigte als image =>Wissenschaftliche Notation/Exponential Datenformat und in Formula Bar als zeigte image

Wenn ich versuchen, die Daten in meinem PHP zu lesen, liest mein PHP die Sekunde Ex Daten als Scientific Notation/Exponential Format nicht als String/Zahl/Dezimal.

Wie kann ich die Zweite Ex Daten als (egal String oder eine Zahl oder Dezimal-Format) erhalten nicht 8.00003E + 14 in meinem PHP?

Thanks :)

HINWEIS: Eigentlich habe ich gelesen, und versuchen Vorschlag in Convert exponential to a whole number in PHP, Convert exponential number to decimal in php, Convert exponential number to decimal in php aber ich habe nichts.

Antwort

5

Wenn Sie 2 Punkte (Dezimalpunkte) in einen Wert eingeben, kann es nur eine Zeichenfolge sein; MS Excel formatiert es als General (die Standardzellenformatierung für MS Excel) als Zeichenfolge. Mit einem einzelnen Punkt (Dezimalpunkt) behandelt PHPExcel es als Zahl und setzt den Datentyp entsprechend; MS Excel General Formatierungsregeln formatieren es mit wissenschaftlicher Formatierung formatieren, wenn es größer als eine standardmäßige 32-Bit-Ganzzahlgröße ist, behandeln es als Float.

Wenn Sie die Zeichenfolgenformatierung erzwingen möchten, müssen Sie dies explizit tun, indem Sie sie als Zeichenfolgendatentyp festlegen, indem Sie setCellValueExplicit() als Zeichensatz erzwingen. oder stellen Sie eine Formatmaske andere als General wie 0

$objPHPExcel->getActiveSheet()->getStyle('A9') 
    ->getNumberFormat() 
    ->setFormatCode(
     '0' 
    ); 
+0

Danke für das Wissen :) Hat nicht der Code oben nur verwenden kann schreiben eine Excel-Datei? – Blackjack

+1

Wenn Sie den Wert lesen, ist er für eine ganze Zahl in 32-Bit-PHP zu groß und wird sogar mit 64-Bit-PHP im wissenschaftlichen Format angezeigt, wenn Sie ihn einfach wiedergeben (nichts mit PHPExcel zu tun, nur grundlegend) PHP). Verwenden Sie 'sprintf()' oder 'number_format()' -Funktionen von PHP, um es als Integer anzuzeigen –

+0

Auch wenn Ihr Vorschlag für meinen Fall nicht funktioniert hat, kann ich zumindest neues Wissen beim nächsten Mal nützlich finden. Danke: D Ich habe versucht, die Anzeige als Zeichenfolge mit 'sprintf', aber es zeigt die ** 8.00003E + 14 ** als Zeichenfolge, nicht ** 800003151476922 ** als Zeichenfolge – Blackjack

Verwandte Themen