PHP で EXCEL を読み取るには 3 つの一般的に使用される方法があり、それぞれに独自の長所と短所があります。個人的には、プラットフォーム間で使用できる 3 番目の方法をお勧めします。
1. .csv 形式で読み取ります
.xls を .csv テキスト形式に変換し、PHP を使用してファイルを分析します。これは、PHP によるテキストの分析と変わりません。
利点: クロスプラットフォーム、比較的効率が高く、読み取りと書き込みが可能です。
欠点: .csv ファイルを直接使用することしかできません。.xls バイナリ ファイルを受け入れることが多い場合は、手動で変換する必要があり、自動化することはできません。 1 つのファイルに存在する SHEET は 1 つだけです。
PHP には独自の分析 .csv 関数があります: fgetcsv
array fgetcsv ( int $handle [, int $length [, string $delimiter [, string $enclosure]]] )
handle は fopen()、popen で構成されます() または fsockopen() によって生成された有効なファイル ポインター。
length (オプション) は、CVS ファイル内の最長の行より大きくなければなりません。このパラメータは、PHP 5 ではオプションです。このパラメータを省略した場合(PHP 5.0.4 以降のバージョンでは 0 に設定)、長さに制限はありませんが、実行効率に影響する可能性があります。
delimiter (オプション) フィールドの区切り文字を設定します (1 文字のみ使用可能)。デフォルト値はカンマです。
囲み (オプション) フィールドの折り返し文字を設定します (1 文字のみ使用可能)。デフォルト値は二重引用符です。このパラメータは PHP 4.3.0 で追加されました。 fgets() と似ていますが、 fgetcsv() は読み取った行を解析し、CSV 形式でフィールドを見つけて、それらのフィールドを含む配列を返します。
fgetcsv() は、ファイルの終わりに達した場合など、エラーが発生した場合に FALSE を返します。
注: CSV ファイル内の空行は、単一の null フィールドを含む配列として返され、エラーとして扱われません。
もちろん、文字列を自分で手動で分析することもできます。
fputcsv 関数を使用して行を CSV にフォーマットし、ファイル ポインターを書き込むこともできます。
2. ODBC リンクされたデータソース
利点: 複数の形式、CVS、XLS などをサポートします。読み取りと書き込みをサポートし、標準 SQL 言語を使用し、SQLSERVER および MYSQL データベースとほぼ同じです。
欠点: Windows サーバーをサポート
3. PHP カスタム クラス
利点: クロスプラットフォーム。一部のクラスは書き込み操作をサポートします。 .xls バイナリ ファイルをサポートします
一般的に使用されるクラスには、phpExcelReader と PHPExcel が含まれます。後者は読み取りと書き込みをサポートしますが、php5.2 以降が必要です。
phpExcelReader は、ファイルを読み取るために特別に使用されます。テーブルのすべての内容を含む配列を返します。
このクラスで使用するメソッドについては、Webサイトからダウンロードした圧縮ファイル内のexample.phpを参照してください。
しかし、私がそれをダウンロードしたとき (バージョン 2009-03-30)、注意すべき点が 2 つあります:
reader.php 次の行を変更する必要があります
Change require_once 'Spreadsheet/Excel/Reader/OLERead.php' ;
require_once 'oleread.inc' に変更します。
example.php の $data->setOutputEncoding('CP1251'); 'cells'][$row][$col]));
は $table_output[$sheet] .= nl2br(htmlspecialchars($data-> シート[$sheet]['cells'][$row][ $col]));
そうでないと中国語に問題が発生します。
繁体字中国語の場合は CP950、日本語の場合は CP932 に変更できます。詳細については、コードページの説明を参照してください。
$data->read(’jxlrwtest.xls’) を独自の Excel ファイル名に変更すると、zip ファイルに添付されている jxlrwtest.xls が壊れるはずです。
これはダウンロード アドレスです:
phpExcelReader: http://sourceforge.net/projects/phpexcelreader/
PHPExcel: http://www.codeplex.com/PHPExcel/Wiki/View.aspx?title=Documents&referringTitle=ホーム
プログラムを作成するときに、バックグラウンドで大量のデータをデータベースにインポートする必要がある場合があります。たとえば、コンピューターのテストのスコアの照会や電話帳のデータなどは、通常、Excel に保存されます。データを csv ファイルにエクスポートし、次のコマンドを使用します。プログラムはバックグラウンドでデータをデータベースにバッチ インポートできます。
以下はプログラムのメイン部分です:
//時間取得関数を定義します
function getmicrotime(){
list($usec, $sec) =explode(" ",microtime() );
return ((float)$usec + (float)$sec);
$time_start = getmicrotime();/ /データベースに接続します
$db=new testcsv;
$handle = fopen ("test.csv","r");$sql="scores(idcard,names,num,sex,nation,score) に挿入 value(";
while ($data = fgetcsv ($handle, 1000, ",")) {
$num = count ( $data);
for ($c=0; $c < $num; $c++) {
if($c==$num-1){$sql=$sql.$data[$c]。 )";break;}
$sql=$sql.$data[$c].",";
}
print "
";
echo $sql."
";
$db->クエリ($sql);
echo "句sql语実行成功!
";
$sql="scores(idcard,names,num,sex,nation,score) に挿入 value(";
}
fclose ($handle);
$time_end = getmicrotime();
$time = $time_end - $ time_start;
echo "程序実行時間:".$time."秒";