Importer un fichier.xls vers une base de données MySQL en php

codelag Messages postés 1 Date d'inscription vendredi 4 octobre 2013 Statut Membre Dernière intervention 4 octobre 2013 - 4 oct. 2013 à 12:38
 codelag - 7 oct. 2013 à 09:58
Bonjour,
J'ai vraiment besoin de votre aide.
Je dois développer une application pour générer des rapport statistiques.
A partir des fichiers Excel et qui seront les tables dans la base de données Mysql.
j'ai déjà développer la partie pour la récupération de données en utilisant la bibliothèque PHPEXCEL mais je n'arrive pas à ajouter les tables à la base de données parce que j'ai un problème au niveau de nombre de champs de chaque table qui dépend des fichiers excel ayant des trentaines de colonnes et il n y a pas la possibilité d'utiliser les boucles dans une requête SQL.

Je vous remercie d'avance.

2 réponses

Bonjour ,
Es que l'importation et faites ?
es que les champs se remplisse ?
// si non laisse moi voir ton code .
c'est un problème de timing
1
Merci bcp rydweb.

le fichier excel e rempli.
le problème qua j'ai c'est que je ne sais pas comment faire pour importer en utilisant le code php pour enregistrer les données dans la base de données parce je dois à chaque fois importer plusieurs fichier sélectionnés ayant des nombres de colonnes différents.

voici mon code pour importer un fichier de 2 colonnes.


<?php

require_once('data.php');
error_reporting(E_ALL);

date_default_timezone_set('Europe/London');

/** PHPExcel */


// Include PHPExcel_IOFactory
include 'phpexcel/classes/PHPExcel/IOFactory.php';
include 'phpexcel/classes/PHPExcel.php';



$lien_vers_mon_document_excel = $_POST['file'];
echo '<input type="hidden" name="file"/>';

$file = basename($lien_vers_mon_document_excel);
$extention = $verif=substr (strrchr ($file, "." ), 1 );
$file_name = $verif=substr ($file, 0,strrpos($file, '.') );


if( $extention == 'xls' ||$extention == 'xlsx' || $extention == 'csv' || $extention == 'csvx')
{
// Read your Excel workbook
try {
$inputFileType = PHPExcel_IOFactory::identify($lien_vers_mon_document_excel);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($lien_vers_mon_document_excel);

} catch(Exception $e) {
die('Error loading file "'.pathinfo($lien_vers_mon_document_excel,PATHINFO_BASENAME).'": '.$e->getMessage());
}


// Get worksheet dimensions
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();



echo '<br>hight::::'.$highestRow.'<br>';
echo '<br>Col::::'.$highestColumn.'<br>';




$array_data = array();
$XLSXDocument = new PHPExcel_Reader_Excel2007();
$Excel = $XLSXDocument->load($lien_vers_mon_document_excel);
echo $file;
// Get worksheet dimensions
// $sheet = $objPHPExcel->getSheet(0);
// $highestRow = $sheet->getHighestRow();
// $highestColumn = $sheet->getHighestColumn();

$sheet = $objPHPExcel->getSheet(0);




// get all the row of my file
$rowIterator = $Excel->getActiveSheet()->getRowIterator();
foreach($rowIterator as $row) {
$cellIterator = $row->getCellIterator();
// Loop all cells, even if it is not set
$cellIterator->setIterateOnlyExistingCells(false);
$rowIndex = $row->getRowIndex ();
$array_data[$rowIndex] = array('A'=>'', 'B'=>'','C'=>'','D'=>'');
echo'<br><br>index_________________'.$rowIndex;
foreach ($cellIterator as $cell) {

if('A' == $cell->getColumn()) {
$array_data[$rowIndex][$cell->getColumn()] = $cell->getCalculatedValue();
} else
if('B' == $cell->getColumn()) {
$array_data[$rowIndex][$cell->getColumn()] = $cell->getCalculatedValue();
} else if('C' == $cell->getColumn()) {
$array_data[$rowIndex][$cell->getColumn()] = $cell->getCalculatedValue();
} else if('D' == $cell->getColumn()) {
$array_data[$rowIndex][$cell->getColumn()] = $cell->getCalculatedValue();
}



$sql1 = $pdo->prepare('create table '.$file_name.'('.$array_data[1]["A"].' varchar(50),'.$array_data[1]["B"].' varchar(50))');
$sql2 = $pdo->prepare('insert into '.$file_name.'('.$array_data[1]["A"].', '.$array_data[1]["B"].') value("'.$array_data[$rowIndex]["A"].'","'. $array_data[$rowIndex]["B"].'")');


} echo 'A'.$array_data[$rowIndex]['A'].' '.$array_data[$rowIndex]['B'].'<br>';
$sql = 'create table '.$file_name.'('.$array_data[1]["A"].' varchar(50),'.$array_data[1]["B"].' varchar(50))';
echo'<br>Sql:::::::'.$sql.'<br>';
$sql1->execute();
$sql2->execute();

}*/



$sql->execute();
$sql1->execute();

}


Else echo '<p>Vous devez choisir un fichier excel ou csv!</p>';
-1
Rejoignez-nous