web-dev-qa-db-fra.com

Lecture d'une feuille XLSX pour alimenter une table MySQL à l'aide de PHPExcel

J'ai trouvé la bibliothèque PHPExcel géniale pour manipuler des fichiers Excel avec PHP (lecture, écriture, etc.).

Mais nulle part dans la documentation n'est expliqué comment lire une feuille de calcul XLSX pour alimenter une table MySQL ...

Désolé pour cette question stupide, mais j'en ai besoin pour mon travail et je n'ai trouvé aucune réponse sur le Web.

Un petit exemple pourrait être très utile.

Merci beaucoup.

MISE À JOUR:

Je précise ma question:

La seule partie du code que j'ai trouvée dans la documentation qui pourrait m'aider est de lire un fichier Excel et de l'afficher dans un tableau HTML:

`require_once 'phpexcel/Classes/PHPExcel.php';
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);

$objPHPExcel = $objReader->load("edf/equipement.xlsx");
$objWorksheet = $objPHPExcel->getActiveSheet();

$highestRow = $objWorksheet->getHighestRow(); 
$highestColumn = $objWorksheet->getHighestColumn(); 

$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); 

echo '<table border="1">' . "\n";
for ($row = 1; $row <= $highestRow; ++$row) {
  echo '<tr>' . "\n";

  for ($col = 0; $col <= $highestColumnIndex; ++$col) {
    echo '<td>' . $objWorksheet->getCellByColumnAndRow($col, $row)->getValue() . '</td>' . "\n";
  }

  echo '</tr>' . "\n";
}
echo '</table>' . "\n";`

Je sais que je peux utiliser la boucle pour alimenter ma table MySQL, mais je ne sais pas comment ... Je ne suis pas au courant dans la POO ...

Quelqu'un peut m'aider s'il vous plait ?

18
mlh

Le premier for parcourt les lignes et le second parcourt les colonnes. Il existe donc de nombreuses solutions à votre "problème".

Vous pouvez, par exemple, remplir un tableau et créer une instruction d'insertion pour chaque ligne. Comme suit :

$rows = array();
for ($row = 1; $row <= $highestRow; ++$row) {
  for ($col = 0; $col <= $highestColumnIndex; ++$col) {
    $rows[$col] = mysql_real_espace_string($objWorksheet->getCellByColumnAndRow($col, $row)->getValue());
  }

  mysql_query("INSERT INTO your_table (col1,col2) VALUES ($rows[1],$rows[2])");
}

Évidemment, ce code peut être amélioré.

8
Imad Moqaddem

Voici le code

$inputFileName = $upload_path . $filename;
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($inputFileName);
$objWorksheet = $objPHPExcel->getActiveSheet();

$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
$rows = array();
for ($row = 1; $row <= $highestRow; ++$row) {
  for ($col = 0; $col <= $highestColumnIndex; ++$col) {
    $rows[$col] = $objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
  }
  mysql_query("INSERT INTO upload (`item_number`,`qty_sold`,`cost_home`) VALUES ($rows[1],$rows[2],$rows[3])");
}

?>

J'ai essayé mysql_query ("INSERT INTO upload (col1, col2) VALUES ($ lignes [1], $ lignes [2])"); ainsi mais n'a pas fonctionné. La table reste vide

8
maestro416