web-dev-qa-db-fra.com

Comment importer un fichier Excel dans la base de données mysql à partir de PHP

Disons, je veux importer/télécharger un fichier Excel vers mysql depuis PHP

Mon HTML est comme ci-dessous

<form enctype="multipart/form-data" method="post" role="form">
    <div class="form-group">
        <label for="exampleInputFile">File Upload</label>
        <input type="file" name="file" id="file" size="150">
        <p class="help-block">Only Excel/CSV File Import.</p>
    </div>
    <button type="submit" class="btn btn-default" name="Import" value="Import">Upload</button>
</form>

Le code PHP est comme ci-dessous

<?php 
if(isset($_POST["Import"]))
{
    //First we need to make a connection with the database
    $Host='localhost'; // Host Name.
    $db_user= 'root'; //User Name
    $db_password= '';
    $db= 'product_record'; // Database Name.
    $conn=mysql_connect($Host,$db_user,$db_password) or die (mysql_error());
    mysql_select_db($db) or die (mysql_error());
    echo $filename=$_FILES["file"]["tmp_name"];
    if($_FILES["file"]["size"] > 0)
    {
        $file = fopen($filename, "r");
        //$sql_data = "SELECT * FROM prod_list_1 ";
        while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE)
        {
            //print_r($emapData);
            //exit();
            $sql = "INSERT into prod_list_1(p_bench,p_name,p_price,p_reason) values ('$emapData[0]','$emapData[1]','$emapData[2]','$emapData[3]')";
            mysql_query($sql);
        }
        fclose($file);
        echo 'CSV File has been successfully Imported';
        header('Location: index.php');
    }
    else
        echo 'Invalid File:Please Upload CSV File';
}
?>

Le fichier Excel est comme ci-dessous

Excel file picture

Je souhaite importer uniquement les valeurs de la 2e ligne dans ma table. S'il vous plaît, aidez-moi comment puis-je le résoudre ou donnez-moi des ressources. J'ai pu télécharger le fichier Excel mais il n'est pas correctement formaté. Je veux télécharger 4 colonnes dans la colonne 4 de mysql mais il télécharge les 4 colonnes dans la colonne 1 de mysql. est-ce que je manque quelque chose?

14
user3342646

Pour> = valeurs de 2e ligne insérées dans le tableau-

$file = fopen($filename, "r");
//$sql_data = "SELECT * FROM prod_list_1 ";

$count = 0;                                         // add this line
while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE)
{
    //print_r($emapData);
    //exit();
    $count++;                                      // add this line

    if($count>1){                                  // add this line
      $sql = "INSERT into prod_list_1(p_bench,p_name,p_price,p_reason) values ('$emapData[0]','$emapData[1]','$emapData[2]','$emapData[3]')";
      mysql_query($sql);
    }                                              // add this line
}
23
Atanu Saha

Vous avez probablement un problème avec le type de fichier CSV que vous avez.

Ouvrez le fichier CSV avec un éditeur de texte, vérifiez que toutes les séparations sont effectuées avec la virgule et non le point-virgule et essayez à nouveau le script. Cela devrait bien fonctionner.

3
Victor del Ama