25

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

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

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

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

4

5 に答える 5

40

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

https://github.com/PHPOffice/PHPExcel

プラスポイント:ディスカッションフォーラム で助けを求めることができ、著者自身から1日以内に回答を得ることができます。これは非常に印象的です。

于 2012-07-12T08:37:17.670 に答える
18

大きなxlsxファイルをデータベースにインポートする必要がある場合があるので、spreadsheet-reader行ごとにファイルを読み取ることができるので使用します。これは、非常にメモリ効率の高いインポート方法です。

<?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

于 2015-01-06T12:25:04.703 に答える
7

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

load data local infile 'FILE.CSV' into table TABLENAME fields terminated by ',' enclosed by '"' lines terminated by '\n' (FIELD1,FIELD2,FIELD3)
于 2012-07-12T09:03:12.850 に答える
4

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

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

編集:ただし、@ diEchoの回答の方が適切と思われるため、私の回答ではなく他の回答を確認することをお勧めします。

于 2012-07-12T08:36:05.283 に答える
2

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

<?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());

?>

于 2015-02-23T13:42:56.113 に答える