web-dev-qa-db-ja.com

PHP Excelをデータベースにインポート(xlsおよびxlsx)

ExcelファイルをMySQLデータベースにインポートするプラグインを検索しようとしましたが、そのうちの1つは http://code.google.com/p/php-Excel-reader/ です

このツールは非常に強力であるため、Excelコンテンツ全体をhtmlに表示します。

ただし、Excelファイルを読み取って、たとえば配列に内容を抽出し、データベースに入るためのSQLステートメントを記述するだけでよいと思います。

良いコードとパッケージはありますか?ありがとう!

20
Ham

これは、適切なドキュメントとサンプルを備えた最高のプラグインです

https://github.com/PHPOffice/PHPExcel

プラスポイント:discussion forum で助けを求めることができ、著者自身から1日以内に回答を得られます。

36
diEcho

時々、大きなxlsxファイルをデータベースにインポートする必要があるので、spreadsheet-reader行ごとにファイルを読み取ることができるため。インポートするのは非常にmemory-efficient方法です。

<?php
    // If you need to parse XLS files, include php-Excel-reader
    require('php-Excel-reader/Excel_reader2.php');

    require('SpreadsheetReader.php');

    $Reader = new SpreadsheetReader('example.xlsx');
    // insert every row just after reading it
    foreach ($Reader as $row)
    {
        $db->insert($row);
    }
?>

https://github.com/nuovo/spreadsheet-reader

16
shukshin.ivan

処理する前に.xlsを.csvに変換できる場合、以下のクエリを使用してcsvをデータベースにインポートできます。

load data local infile 'FILE.CSV' into table TABLENAME fields terminated by ',' enclosed by '"' lines terminated by '\n' (FIELD1,FIELD2,FIELD3)
7
user1259132

ExcelファイルをCSVファイルとして保存すると、PHPMyAdminなどのツールを使用してmysqlデータベースにインポートできます

これがあなたの状況に役立つかどうかはわかりませんが、手動またはプログラムでcsvファイルを使用すると、思っていたExcelファイルよりもデータベースに簡単に解析できます。

編集:しかし、@ diEchoの回答がより適切と思われるので、私よりも他の回答を見ることをお勧めします。

3
Jon Taylor

私は継承クラスを書きました:

<?php
class ExcelReader extends Spreadsheet_Excel_Reader {    
        
 function GetInArray($sheet=0) {

  $result = array();

   for($row=1; $row<=$this->rowcount($sheet); $row++) {
    for($col=1;$col<=$this->colcount($sheet);$col++) {
     if(!$this->sheets[$sheet]['cellsInfo'][$row][$col]['dontprint']) {
      $val = $this->val($row,$col,$sheet);
      $result[$row][$col] = $val;
     }
    }
   }
  return $result;
 }

}
?>

だから私はこれを行うことができます:

<?php

 $data = new ExcelReader("any_Excel_file.xls");
 print_r($data->GetInArray());

?>
1
Ozsvar Istvan