ホームページ > バックエンド開発 > PHPチュートリアル > ThinkPHP と PHPExcel の競合解決_PHP チュートリアル

ThinkPHP と PHPExcel の競合解決_PHP チュートリアル

WBOY
リリース: 2016-07-21 15:24:58
オリジナル
854 人が閲覧しました

Excel を操作できる PHPExcel (公式サイト) というクラスがあることは以前から知っていましたが、試す機会がありませんでした。今日試してみたところ、非常に強力であることがわかりました。ダウンロードしたソースコードパッケージには詳細なドキュメントが含まれており、Excelのすべての機能を手動で操作することができます。
Excel を読み取る簡単な例は次のとおりです:

コードをコピーします コードは次のとおりです:

$inputFileType = 'Excel2007'
$inputFileName = './public/files/import_user_template.xlsx ';
$sheetname = 'Sheet1';
//Excel の種類を指定し、リーダーを作成します
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
//数式と形式を除く、データのみを読み取るように設定します
$objReader ->setReadDataOnly (true);
//指定されたシートのみを読み取ります
$objReader->setLoadSheetsOnly($sheetname);
$curSheet = $objPHPExcel- >getSheet (0);
//データを含む最大の列
$allColumn = $curSheet->getHighestColumn();
//データを含む最大の行
$allRow = $curSheet->getHighestRow(); for($ currentRow = 1; $currentRow for($currentCol = 'A'; $currentCol echo $curSheet->getCell( $currentCol. $currentRow)->getValue()."t";
}
echo "rn";

ThinkPHP で使用するには、ソース コード パッケージの Classes ディレクトリを Vendor ディレクトリにコピーします。 ThinkPHP を実行し、名前を PHPExcel に変更し、Vendor メソッドを呼び出してロードします


コードをコピーします
コードは次のとおりです。 vendor('PHPExcel.PHPExcel')
Excel の読み込み後に M または D メソッドのインスタンスが呼び出されることが判明しました。モデル クラスを変更すると、Model クラスが見つからないというエラーが表示されます。調査の結果、自動読み込みメカニズムと競合していることが判明しました。競合がある場合は、M または D メソッドを呼び出す前に、spl_autoload_register 関数を使用してオートローダー クラスを再登録する必要があります


コードをコピーします
コードは次のとおりです: spl_autoload_register(array('Think', 'autoload'));

ThinkPHPでPHPExcelを呼び出す問題の解決策
ThinkPHPでPHPExcelを呼び出すと、データは完全に読み出すことができますが、次のステップはD、Mでないと呼び出し時にエラーが発生しますテンプレート。 (この問題に遭遇するのは私だけでしょうか?)
調査後、ついに解決策を見つけました。みんなと共有しましょう。ふふ! 1. まず PHPExcel パッケージをダウンロードし、ThinkPHP/Vendor/ (つまり、Think のサードパーティ ライブラリ ディレクトリ) に配置します。
2. 関数を呼び出します。



コードをコピーします
コードは次のとおりです: protected function Import_Execl($file){ if(!file_exists($file)){
return array("error"=>1);

ベンダー ("PHPExcel.PHPExcel");
$PHPExcel = 新しい PHPExcel();
$PHPReader = 新しい PHPExcel_Reader_Excel2007();
$PHPReader = 新しいPHPExcel_Reader_Excel5() ;
if(!$PHPReader->canRead($file)){
return array("error"=>2)
}
}
$PHPExcel = $PHPReader->load($file) );
$SheetCount = $PHPExcel->getSheetCount();
for($i=0;$i$currentSheet = $PHPExcel->getSheet($i); allColumn = $ this->ExcelChange($currentSheet->getHighestColumn());
$allRow = $currentSheet->getHighestRow();
$array[$i]["Title"] = $currentSheet-> getTitle() ;
$array[$i]["列"] = $allColumn;
$arr = array(); 1;$ currentRow$row = array();
for($currentColumn=0;$currentColumn$row[$currentColumn] = $currentSheet- >getCellByColumnAndRow ($currentColumn,$currentRow)->getValue();
}
$arr[$currentRow] = $row;
$array[$i]["Content"] = $arr;
spl_autoload_register( array('Think','autoload'));//必須、そうでない場合は ThinkPHP と PHPExcel が競合します
unset($PHPReader)
unlink($) file) ;
return array("error"=>0,"data"=>$array);
protected function ExcelChange($str){//Execl バッチインポートと連携する関数
$len = strlen ($str )-1;
$num = 0;
for($i=$len;$i>=0;$i--){
$num += (ord($str[$i]) - 64)* pow(26,$len-$i);
}
return $num;


3、呼び出します。



コードをコピーします

コードは次のとおりです:

パブリック関数 import(){
if(isset($_FILES["import"]) && ($_FILES["import"]["error"] == 0)){
$result = $this-> Import_Execl($_FILES["import"]["tmp_name"]);
if($this->Execl_Error[$result["error"]] == 0){
$execl_data = $result["data"] [0]["コンテンツ"];
$data = D("データ");
foreach($execl_data as $k=>$v){
$d["シリアル番号"] = $v[0];
$d["チェック番号"] = $v[1];
$d["ワーク番号"] = $v[2];
$d["クラス名"] = $ v[3];
$d["ユーザー名"] = $v[4];
$d["エラーレベル"] = $v[6];
$data->data($d)->add();
$this->success($this->Execl_Error[$result["error"]]);
}else{
$this->error($this->Execl_Error[$result["error"]]);
}
}else{
$this->error("ファイルのアップロードに失敗しました");

4、エラー データ:



コードをコピー

コードは次のとおりです:
protected $Execl_Error = array("データは正常にインポートされました", "ファイルが見つかりません", "Execl ファイル形式が正しくありません") ;

http://www.bkjia.com/PHPjc/324208.html
www.bkjia.com

tru​​e

技術記事 Excel を操作するために使用できる PHPExcel (公式 Web サイト) というクラスがあることは以前から知っていましたが、今日試してみたところ、非常に強力であることがわかりました。ソースコードパッケージには詳細情報が含まれています...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート