web-dev-qa-db-ja.com

PHPExcelを使用してXLSXシートを読み取り、MySQLテーブルにフィードする

PHPExcelライブラリは、PHP(読み取り、書き込みなど))でExcelファイルを操作するのに優れています。

しかし、ドキュメントのどこにも説明されていませんMySQLテーブルにフィードするためのXLSXワークシートの読み方 ...

このばかげた質問には申し訳ありませんが、私は自分の仕事にそれを必要としており、ウェブ上で答えを見つけられませんでした。

小さな例は非常に役立ちます。

どうもありがとう。

更新:

私は私の質問を正確に:

ドキュメントで見つけたコードの中で、Excelファイルを読んで、それを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";`

ループを使用してMySQLテーブルにフィードできることはわかっていますが、方法がわかりません... OOPではわかりません...

誰かが私を助けてくれませんか?

18
mlh

最初のforは行をループし、2番目の列は列をループします。したがって、「問題」には多くの解決策があります。

たとえば、配列にデータを入力して、各行に挿入ステートメントを作成できます。次のように:

$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])");
}

明らかに、このコードは改善できます。

8
Imad Moqaddem

これがコードです

$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])");
}

?>

Mysql_query( "INSERT INTO upload(col1、col2)VALUES($ rows [1]、$ rows [2])");を試しました同様に動作しませんでした。テーブルは空のままです

8
maestro416