PHPExcel_PHP チュートリアルを使用した重要なポイントの分析

WBOY
リリース: 2016-07-15 13:34:44
オリジナル
865 人が閲覧しました

ウェブサイト開発でよく使います

以前は、Excelをmysqlデータベースにインポートするための一般的なPHPプログラムを作成する予定で、基本的に完成した後は放置していました。先月、教務室の先生から「国家成績試験登録照会システム」の作成を手伝ってほしいと依頼されました。このシステムでは、生徒の Excel 情報のインポートとエクスポートや写真の zip 圧縮も必要でした。

このプログラムは先週完成したばかりですが、Java などの言語で処理するのは比較的簡単ですが、この関数を PHP に追加するには、バージョン 5.2 以降でのみ完了できます (新しい PHP_zip 拡張子が必要です)。結局のところ、1 か月の接触を経て、最も基本的な使用方法のいくつかについて少し学びました。また、初めてオンラインを開始するときに遭遇しやすい問題にも遭遇しました。基本的な使い方と、起こり得る基本的な質問について詳しく説明します。

まず、PHP_zip 拡張機能を開き、作業中の PHP.INI ファイルを見つけて、この拡張機能を開き、PHP フォルダーの ext フォルダーで PHP_zip.dll ファイルを見つけ、system32 システム フォルダーにコピーする必要があります (状況によって異なります)。設定方法に応じて)。

インターネット上で最も一般的な問題は、PHPExcel の使用時にこの拡張機能がオンになっていないことです。

ここで、注意が必要で間違いやすいいくつかのことについて話したいと思います。

1. PHPExcelを使用してExcelドキュメントオブジェクトを作成するには2つの方法があります。

1 つは直接作成する方法です

include 'PHPExcel/Writer/Excel2007.PHP';
$objPHPExcel = new PHPExcel();

もう 1 つは Reader クラスを通じて読み取りおよび作成する方法です

require 'PHPExcel/Reader /Excel2007.PHP';
$objReader = new PHPExcel_Reader_Excel2007;
$objPHPExcel = $objReader->load("mytest.xlsx");

ここで説明したいのは、これには Excel2007.PHP が含まれていることです。 ms office2007 で開く xlsx タイプの Excel を作成しました。以前の xls (office2007 より前のバージョン) を作成したい場合は、excel2007 の代わりに Excel5.PHP を含める必要があります (リーダー クラスでもライター クラスでも)。注目すべきだ。たとえば、上記の 2 つの使用法は直接作成する必要があります:

include 'PHPExcel/Writer/Excel5.PHP';
$objPHPExcel = new PHPExcel();

リーダークラスを通じて読み取りおよび作成

require 'PHPExcel/ Reader /Excel5.PHP';
$objReader = new PHPExcel_Reader_Excel5;
$objPHPExcel = $objReader->load("mytest.xlsx");

2. PHPExcel を使用して提供されたドキュメントを読んだ後、次のように尋ねるかもしれません。 Excel でセルの値を読み取りたいだけですが、その読み取り方法が指定されていません。私も最初にこれに遭遇しました。次のようにすることができます:

$sheet = $objPHPExcel->getActiveSheet();
$ string = $sheet->getCell('F2')->getValue();

もちろん、Excel が数式の場合は、次のようにする必要があります

$sheet = $objPHPExcel - >getActiveSheet();
$string = $sheet->getCell('F2')-> getManyValue();

3. PHPExcel を使用して、長い数値が科学表記法に変換される問題を解決します。

そして最後の数桁は0として無視されます。この問題は私を長い間悩ませてきました。IDカードや学生番号などの数値です。setValueを直接指定すると、Excelの出力が自動的に科学表記に変換されます。インターネット上では情報が少なく、ほとんどが間違っていることがわかりました。 PHPexcelのソースコードを変更して実装されたドキュメントを見つけました

Writer/Excel5ファイル、202行目、

<ol class="dp-xml">
<li class="alt"><span><span>if ($cell-</span><span class="tag">></span><span>hasHyperlink()) {  </span></span></li>
<li>
<span>$worksheet-</span><span class="tag">></span><span>writeUrl($row, $column,<br> str_replace('sheet://', 'internal:', <br>$cell-</span><span class="tag">></span><span>getHyperlink()-</span><span class="tag">></span><span>getUrl()), <br>$cell-</span><span class="tag">></span><span>getValue(), $formats[$styleHash]);  </span>
</li>
<li class="alt"><span>}  </span></li>
<li><span>else {  </span></li>
<li class="alt">
<span>$worksheet-</span><span class="tag">></span><span>write($row, $column, $cell-</span><span class="tag">><br></span><span>getValue(), $formats[$styleHash],$style-</span><span class="tag">><br></span><span>getNumberFormat()-</span><span class="tag">></span><span>getFormatCode());  </span>
</li>
<li><span>}  </span></li>
<li class="alt">
<span>改为if ($cell-</span><span class="tag">></span><span>hasHyperlink()) {  </span>
</li>
<li>
<span>$worksheet-</span><span class="tag">></span><span>writeUrl($row, $column, <br>str_replace('sheet://', 'internal:', <br>$cell-</span><span class="tag">></span><span>getHyperlink()-</span><span class="tag">></span><span>getUrl()), $cell-</span><span class="tag">><br></span><span>getValue(), $formats[$styleHash]);  </span>
</li>
<li class="alt">
<span>}else if($cell-</span><span class="tag">></span><span>getDataType() == <br></span>PHP<span>Excel_Cell_DataType::TYPE_STRING ) {  </span>
</li>
<li>
<span>$worksheet-</span><span class="tag">></span><span>writeString($row,$column,$cell-</span><span class="tag">><br></span><span>getValue(),$formats[$styleHash]);  </span>
</li>
<li class="alt"><span>}  </span></li>
<li><span>else {  </span></li>
<li class="alt">
<span>$worksheet-</span><span class="tag">></span><span>write($row,$column,$cell-</span><span class="tag">><br></span><span>getValue(),$formats[$styleHash],$style-</span><span class="tag">><br></span><span>getNumberFormat()-</span><span class="tag">></span><span>getFormatCode());} </span>
</li>
</ol>
ログイン後にコピー

そして、Excelに書き込むときは、テキスト形式で書き込むだけです(ソースコードをテキストに変更しないでください)科学的および技術的な方法でもあります)

$objPHPExcel->getActiveSheet()->setCellValueExplicit($letters_arr[$j+1] . ($i+1),$this->student_info[$i][ $j],PHPExcel_Cell_DataType::TYPE_STRING);
$objPHPExcel->getActiveSheet()->getStyle($letters_arr[$j+1] . ($i+1))->getNumberFormat()->setFormatCode ("@");

4. PHPExcelを使用してExcelの列数と行数を取得するにはどうすればよいですか?

これは、初めて PHPexcel を使い始めたときに、テスト サンプル プログラムにはこれが提供されていないため、使いにくいと感じた場合にも当てはまります。以下は codeplex で私が尋ねた質問と回答です。読めば誰もがそれを知るでしょう(投稿の最後に写真があります)。

5. PHPExcelを使用してループを通じて各セルの値を取得する方法。

ObjPHPExcel オブジェクトの print_r 出力では、多くの複雑なことがわかりますが、実際には、組み込みメソッドを使用すると非常に簡単です。私はこの方法を使っています

$letters_arr = array(1=>'A',2=>'B',3=>'C',4=>'D',5=>'E',6=> 'F',7=>'G',8=>'H',9=>'I',10=>'J',11=>'K',12=>'L ',13=>'M', 14=>'N',15=>'O',16=>'P',17=>'Q',18=>'R', 19=>'S',20=>'T',21=>'U',22=>'V',23=>'W',24=>'X',25= >'Y',26=>'Z');

文字の配列を設定することで、ループ変数を使用して列数をループできます。ここでもちょっとした冗談を言いましたが、実はループ用に A の文字を ASC コードに変換しようと思ったのですが、PHP の本を読んで、PHP での文字の整数への変換が C と同じではないことがわかりました。と C++ は基本がまったく異なります。

6. PHPExcel を使用したデータベースと Excel のコーディングに関する問題。

これにも注意が必要です。Excel は UTF-8 エンコーディングを使用するため、データベースからデータを読み取るたびに変換することを忘れないでください。
$this->student_info[$i][$j]=iconv("gbk","UTF-8",$this->student_info[$i][$j]);しかし、問題はこれはそれほど単純ではありません。PHPExcel を使用して Excel からデータを読み取ると、中国語の文字を含む列が読み取られず、空になることがあります。

print_r を使用して出力すると、セルも空であることがわかります。エンコードしている場合は文字化けが出力されるはずなので、これは変換エンコードの問題ではありませんが、これは PHPexcel が文字化けを読み取っていないためです。その欄の漢字。この問題はよくわかりませんが、excel5.PHP ファイルをリーダーで開き、$this->_defaultEncoding = 'isoXXXXX'; を $this->_defaultEncoding = 'UTF-8'; に変更しました。コードが文字化けしている場合は、後でエンコードを変換することで解決できます。公式サイトで質問してもダメでしたので、もっと良い方法があれば教えてください。


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/445964.html技術記事 Webサイト開発では、PHP経由でExcelをmysqlデータベースにインポートする一般的なプログラムを使用することが多く、基本的に完成したら放置します。先月、教務室の先生から電話がありました…
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!