Ich lade Excel-Dateien (.xls) mit numerischen Werten wie 884.557 und 731.0547 in eine MySQL-Datenbank hoch, indem ich die in phpMyAdmin eingebaute Importfunktion verwende. Allerdings habe ich schreckliche Probleme mit Rundungen und Abrundungen. Aus irgendeinem Grund werden einige Werte wie 884,557 und 731,0547 in 99,99999 oder 9,99999 geändert. Andere Werte wie 127,0947 werden jedoch korrekt importiert. Kann mir jemand helfen? Wenn möglich, würde ich gerne weiterhin die eingebaute phpMyAdmin-Importfunktion verwenden, da sie sehr nützlich ist.
Antworten
Zu viele Anzeigen?Wenn Sie mit html und php vertraut sind, können Sie mit diesem Skript simplex excel bibliothek Sie können Ihren eigenen Excel-Import in Mysql erstellen. Es kann ein paar Minuten dauern, um zu erstellen, aber einmal Ihre erstellen Sie es für das Leben Zeit verwenden können.
EIN HTML-FORMULAR ZUM HOCHLADEN EINER EXCEL-TABELLE ERSTELLEN
DANN ERSTELLEN SIE EIN PHP-SKRIPT WIE UNTEN
require 'simplexlsx.class.php';
if (isset($_FILES['Filedata'])) {
$file = $_FILES['Filedata']['tmp_name']; // UPLOADED EXCEL FILE
$xlsx = new SimpleXLSX($file);
list($cols, $rows) = $xlsx->dimension();
foreach( $xlsx->rows() as $k => $r) { // LOOP THROUGH EXCEL WORKSHEET
$q = "INSERT INTO TABLENAME(COL1, COL2) VALUE(";
$q .= "'".mysql_escape_string($r[0])."', "; // EXCEL DATA
$q .= "'".mysql_escape_string($r[1])."', "; // EXCEL DATA
$q .= ")";
$sql = mysql_query($q);
} // IF ENDS HERE
} // FOR EACH LOOP
}
Das ist es, was ich normalerweise tue:
-
Speichern Sie die Excel-Datei im CSV-Format
-
Ich werde die Datenbanktabelle manuell erstellen, indem ich die Datentypen für jede Spalte, die mich interessiert, angebe.
-
Ich lade die csv-Datei in die ausgewählte Tabelle hoch und ignoriere dabei die "Spaltennamen", wie ich sie in Schritt 2 definiert habe. Dezimalzahlen werden abgeschnitten, weil phpmyadmin einen unerklärlichen Algorithmus hat, um den Datentyp und die einer Spalte zugewiesene Größe zu bestimmen. Um dies zu verhindern, erstellen Sie die Tabelle wie in Schritt 2 beschrieben.
Hoffentlich hilft das!