10
votes

Importer un fichier Excel dans une table MySQL avec phpexcel

OK Alors j'ai pu obtenir PHP pour afficher les données de la feuille Excel .xls, mais ces mêmes données que je veux être capable d'insérer dans ma table. Je n'arrive pas à comprendre cette partie, voici ce que j'ai jusqu'à présent:

$sql = "insert into tablename (col1, col2, col3) values(...)";
//start at row 2 so headers are not inserted
for ($row = 2; $row <= $highestRow; ++ $row) {

    for ($col = 0; $col < $highestColumnIndex; ++ $col) {
        $cell = $worksheet->getCellByColumnAndRow($col, $row);
        $val = $cell->getValue();
        //here's my prob..
        echo $val;
    }
    $result = mysql_query($sql);
}


7 commentaires

Alors, est-ce que ce devoir? Si oui, pouvez-vous l'étiqueter comme tel ....


Oh non, ce n'est pas des devoirs, c'est une pigiste que j'ai abordé et que la dernière minute, ils ont demandé cette option et que tout le projet doit être de mercredi. Si cela se trouvait dans .net, j'aurais été fait d'ici, mais cela devait être fait dans php :(


À quoi ressemble votre fichier Excel par rapport à votre table MySQL?


@Jason, ayou signifie qu'ils diffèrent dans la structure? @Andres, vous avez ainsi enregistré les valeurs $ val à la base de données de chaque ligne (TR) également ce message décrit ceci: phpexcel.codeplex.com/discussions/264916


@Jason ils sont la même colonne sage


@Kaosforge j'ai regardé ce lien mais tout ce qu'il dit, c'est ce que vous dites que je connais, cela passe à travers chaque ligne et sauve, mais comment ou quand puis-je l'enregistrer à la table? c'est ma question. J'ai édité ma question à inclure une idée que j'ai, alors vous voyez que je me fais des efforts :)


S'ils sont les mêmes que vous bouclez dans les cellules les ajoutez à un tableau pour construire l'instruction SQL - la réponse de Kaosforge devrait faire le tour.


3 Réponses :


7
votes

Vous devez créer un tableau et le stocker dans la base de données, comme celui-ci, par exemple:

for ($row = 2; $row <= $highestRow; ++ $row) {
$val=array()
for ($col = 0; $col < $highestColumnIndex; ++ $col) {
    $cell = $worksheet->getCellByColumnAndRow($col, $row);
    $val[] = $cell->getValue();
    //here's my prob..
    //echo $val;
}

$sql="insert into tablename (col1, col2, col3) values(`".$val[0]."`, `".$val[1]."`, `".$val[2].")";
$result = mysql_query($sql);


}


1 commentaires

Cela a l'air génial, je n'ai pas encore testé parce que je n'ai actuellement pas accès au FTP pour télécharger les modifications, mais dès que j'essaye, je vais le marquer comme répondu. Merci!



0
votes

C'est un bon article utilisant une feuille de calcul de la bibliothèque de paires ...

http://major.io / 2008/11/07 / Importation-Excel-Fichiers-in-mysql-with-php /

Vérifiez-le


0 commentaires

1
votes

Si vous souhaitez utiliser PHPEXCEL pour le faire:

<?php
//include the following 2 files
require 'Classes/PHPExcel.php';
require_once 'Classes/PHPExcel/IOFactory.php';

$SERVER = 'localhost';
$USERNAME = 'username';
$PASSWORD =  'password';
$DB = 'database';
$DSN = "mysql:host=".$SERVER.";dbname=".$DB."";
$connection = new PDO($DSN,$USERNAME,$PASSWORD);

$path = "test.xlsx";

$objPHPExcel = PHPExcel_IOFactory::load($path);
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
    $worksheetTitle     = $worksheet->getTitle();
    $highestRow         = $worksheet->getHighestRow(); // e.g. 10
    $highestColumn      = $worksheet->getHighestColumn(); // e.g 'F'
    $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
    $nrColumns = ord($highestColumn) - 64;
    echo "<br>The worksheet ".$worksheetTitle." has ";
    echo $nrColumns . ' columns (A-' . $highestColumn . ') ';
    echo ' and ' . $highestRow . ' row.';
    echo '<br>Data: <table border="1"><tr>';
    for ($row = 1; $row <= $highestRow; ++ $row) {
        echo '<tr>';
        for ($col = 0; $col < $highestColumnIndex; ++ $col) {
            $cell = $worksheet->getCellByColumnAndRow($col, $row);
            $val = $cell->getValue();
            $dataType = PHPExcel_Cell_DataType::dataTypeForValue($val);
            echo '<td>' . $val . '<br>(Typ ' . $dataType . ')</td>';
        }
        echo '</tr>';
    }
    echo '</table>';
}

for ($row = 2; $row <= $highestRow; ++ $row) {
    $val=array();
for ($col = 0; $col < $highestColumnIndex; ++ $col) {
   $cell = $worksheet->getCellByColumnAndRow($col, $row);
   $val[] = $cell->getValue();
}

 $Connection="INSERT INTO `users` (name, family, type) VALUES ('".$val[1] . "','" . $val[2] . "','" . $val[3]. "')";

}
?>


0 commentaires