phpプラグイン導入excel汎用パッケージ方法(2018/7/6)

5779 ワード

1.phpexcelプラグインテンプレートを読み込んでsqlデータdemoをロードし、excel$file_をエクスポートpath = Config::get('EXCEL_PATH').'1.xls';     $file = $file_path; if(!file_exists($file){return['status'=>false,'message'=>'テンプレートファイル'.$fileが見つからない;    }    vendor("PHPExcel.PHPExcel");     $obj =\PHPExcel_IOFactory::load($file);    $obj->setActiveSheetIndex(0);/*-----------データベースからの情報の抽出を開始Excelテーブルへの挿入------------------*/
//
インスタンス化が完了したら、まずデータベースのデータを調べます.$sql = db('sys_user')->select();
 
$i=2;//ループ出力データが行数$count=count($sql)を制御することを目的とするi変数を定義します.//データの数を計算
for ($i = 2; $i <= $count+1; $i++) { $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $sql[$i-2][uid]); $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $sql[$i-2][user_name]); $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $sql[$i-2][user_tel]);
 
// $i=2;  if ($i == 2) {             $obj->getActiveSheet()->setCellValue('B' . $i, 1);             $obj->getActiveSheet()->setCellValue('D' . $i, 2);             $obj->getActiveSheet()->setCellValue('F' . $i, 3);             $i++;             $obj->getActiveSheet()->setCellValue('B' . $i, 1);             $obj->getActiveSheet()->setCellValue('D' . $i, 2);             $obj->getActiveSheet()->setCellValue('F' . $i, 3);             $i++;             $obj->getActiveSheet()->setCellValue('B' . $i, 1);             $obj->getActiveSheet()->setCellValue('D' . $i, 2);             $obj->getActiveSheet()->setCellValue('F' . $i, 3);         }     $file_name = date('ymdHis', time()).'商品届出書         $PHPWriter =\PHPExcel_IOFactory::createWriter( $obj,"Excel2007");//Excel2007     ob_end_clean();//バッファをクリアし、文字化けしheader('Content-Disposition:attachment;filename='.$file_name.'.xlsx')を避ける.    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');           $PHPWriter->save("php://output");//は$pathパスの下にdemo.xlsxファイルexit();return['status'=>true];}2.excelをインポート::::::/**はアップロードしたexcelファイルを読み込みます*@param array$fileアップロードしたファイルデータ*@return array*/function readExcelFiles($file){if(empty($file)|$file['size']==0){return['status'=>false,'message'=>'ファイルアップロードなし']];if(!in_array(pathinfo($file['name'])['extension'],['xlsx','xls']){return['status'=>false,'message'=>'アップロードファイル接尾辞は許可されません'];
}
 
//サードパーティ製パッケージvendor('PHPExcel.PHPExcel.IOFactory');filename = $file['tmp_name'];//自動取得ファイルの種類はphpexcel用$fileType=PHPExcel_IOFactory::identify($filename);//ファイル読み込み操作オブジェクト$objReader=PHPExcel_を取得IOFactory::createReader($fileType);//ファイル$objPHPExcel=$objReader->load($filename);return ['status' => true, 'source' => $objPHPExcel]; } 自分のプロジェクトに書かれた需要機能の1つです.コードはeg:/***完全な商品登録情報をインポート*@param resource$file excel*/public function importGoodsInfo($file){$result=readExcelFiles($file['goods']);if(!$result['status']){return['status'=>false,'message'=>$result['message']]]];//商品リスト情報の充実$good_info = filterData($result['source']->getSheet(0)->toArray());                 $goods = Db::name('goods_declare_list');//テーブルの情報が正しいかどうかを確認します($good_info[0]);$good_serial = []; foreach($good_info as$key=>$value){///すべての要素が空である場合、レコードif(empty($value[0])&&empty($value[1])&&empty($value[2])&&empty($value[3]&&empty($value[3])&&empty($value[4])&&empty($value[5])&&empty($value[6])&empty($value[7])&&empty($value[8]){unset($good_info_info_info as$key==>>)&empty($value[[fo[$key]);continue;}//商品名if(empty($value[0]){return['status'=>false,'message'=>'商品番号は空ではありません];if(in_array($value[0],$good_serial){return['status'=>false,'message'=>'商品番号'.$value[0].'繰り返し'];}if(empty($value[1])||empty($value[2]){return['status'=>false,'message'=>'商品SKUコード、棚品名はいずれも空ではない'].if(empty($value[3])|empty($value[4])|empty($v[5])){return['status'=>false,'message'=>'エラーメッセージ:商品情報における郵送税番号、HS符号化、商品名が空にならない場合は、']を確認してください.                         }                                             $save_info[$key-1]['Seq'] = $value[0]; $save_info[$key-1]['SKU'] = $value[1]; $save_info[$key-1]['ShelfGName'] = $value[2];                         $save_info[$key-1]['NcadCode']=$value[3];                         $save_info[$key-1]['HSCode']=$value[4];                         $save_info[$key-1]['GoodsName']=$value[5];                        $good_serial[] = $value[0]; }//アップロードされたファイル情報が空の場合、if(empty($save_info){return['status'=>false,'message'=>'アップロードされた商品登録情報を検証しないと空にできません]//データ$goods->startTrans()を更新します.foreach ($save_info as $key => $value) { $save['Seq'] = $value['Seq']; $save['SKU'] = $value['SKU']; $save['ShelfGName'] = $value['ShelfGName'];                         $save['NcadCode']=$value['NcadCode'];                         $save['HSCode']=$value['HSCode'];                         $save['GoodsName']=$value['GoodsName']; if($goods->insert($save)==false){$goods->rollback();return['status'=>false,'message'=>'未知のエラー:操作に失敗しました.もう一度試してください']}$goods->commit(); return ['status' => true]; }