thinkPHP5.1.9 vendor 第三方库的使用
在thinkphp 5.1.x后vendor的使用方法發(fā)生變化,文檔有沒有詳細(xì)說明。本文是自己在thinkphp5.1.9下測試成功。
thinkPHP5.1.9 vendor 第三方庫的使用
1、在thinkPHP 5.1.X新版取消了Loader::import方法以及import和vendor助手函數(shù),推薦全面采用命名空間方式的類以及自動加載機(jī)制,如果必須使用請直接改為php內(nèi)置的include或者require語法。
原來的import("Vendor.Classes.PHPExcel.IOFactory");或Vendor('phpoffice.phpexcel.Classes.PHPExcel.IOFactory');方法已經(jīng)不再使用。
2、在thinkPHP 5.1.X中的處理方法
2.1、必須使用composer方式安裝第三方模塊。否則在vendor目錄下的內(nèi)容無法自動加載。
這個可以通過查看K:\xampp\htdocs\tp51\vendor\composer目錄下的installed.json文件知道哪些可以自動加載。
在這里手工考入的文件無法自動加載。
例子:
在K:\xampp\htdocs\tp51\目錄下執(zhí)行:
composer require phpoffice/phpspreadsheet
composer require phpoffice/phpexcel
安裝兩個第三方電子表處理文件。
安裝在K:\xampp\htdocs\tp51\vendor\phpoffice目錄下。
2.2在程序中使用
2.2.1、phpexcel使用
在程序文件頭部加入:
use PHPExcel_IOFactory;
use PHPExcel;
?
在程序中使用:
$table='xztxl';
? ? ? ? $file='xztxl';
? ? ? ? $data= Db::name('xztxl')->order('listorder asc,dep asc')->select();
? ? ? ? error_reporting(E_ALL);
? ? ? ? date_default_timezone_set('Asia/chongqing');
? ? ? ? $objPHPExcel = new \PHPExcel();
? ? ? ? /*設(shè)置excel的屬性*/
? ? ? ? $objPHPExcel->getProperties()->setCreator("aaa")//創(chuàng)建人
? ? ? ? ->setLastModifiedBy("aaa")//最后修改人
? ? ? ? ->setKeywords("excel")//關(guān)鍵字
? ? ? ? ->setCategory("result file");//種類
? ? ? ? //第一行數(shù)據(jù)
? ? ? ? $objPHPExcel->setActiveSheetIndex(0);
? ? ? ? $active = $objPHPExcel->getActiveSheet();
? ? ? ? $field_titles=array(
? ? ? ? 'dep'=>'部門',
? ? ? ? 'room'=>'房間號',
? ? ? ? 'officep1'=>'外線號碼',
? ? ? ? 'officep2'=>'短號',
? ? ? ? 'pname'=>'人員名稱',
? ? ? ? 'mobile'=>'手機(jī)號',
? ? ? ? 'mobile_s'=>'手機(jī)短號',
? ? ? ? 'listorder'=>'排列序號',
? ? ? ? );
? ? ? ? $i=0;
? ? ? ? foreach($field_titles as $key=>$name){
? ? ? ? ? ? $ck = num2alpha($i++) . '1';
? ? ? ? ? ? $active->setCellValue($ck, $name);
? ? ? ? }
? ? ? ? //填充數(shù)據(jù)
? ? ? ? foreach($data as $k => $v){
? ? ? ? ? ? $k=$k+1;
? ? ? ? ? ? $num=$k+1;//數(shù)據(jù)從第二行開始錄入
? ? ? ? ? ? $objPHPExcel->setActiveSheetIndex(0);
? ? ? ? ? ? $i=0;
? ? ? ? ? ? foreach($field_titles as $key=>$name){
? ? ? ? ? ? ? ? $ck = num2alpha($i++) . $num;
? ? ? ? ? ? ? ? $active->setCellValue($ck, $v[$key]);
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? $objPHPExcel->getActiveSheet()->setTitle($table);
? ? ? ? $objPHPExcel->setActiveSheetIndex(0);
? ? ? ? header('Content-Type: application/vnd.ms-excel');
? ? ? ? header('Content-Disposition: attachment;filename="'.$file.'.xls"');
? ? ? ? header('Cache-Control: max-age=0');
? ? ? ? $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
? ? ? ? $objWriter->save('php://output');
?
2.2.2、phpspreadsheet使用
在程序頭部
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\IOFactory;
?
處理程序:
$table='xztxl';
? ? ? ? $file='xztxl';
? ? ? ? $data= Db::name('xztxl')->order('listorder asc,dep asc')->select();
? ? ? ? $spreadsheet = new Spreadsheet();
? ? ? ? $spreadsheet->getProperties()->setCreator("aaa")//創(chuàng)建人
? ? ? ? ->setLastModifiedBy("aaa")//最后修改人
? ? ? ? ->setKeywords("excel")//關(guān)鍵字
? ? ? ? ->setCategory("result file");//種類 ? ? ? ?
? ? ? ? $sheet = $spreadsheet->getActiveSheet();
? ? ? ? ? ? ? ? //第一行數(shù)據(jù)
? ? ? ? $sheet->getColumnDimension('A')->setAutoSize(true);
? ? ? ? $sheet->getColumnDimension('B')->setAutoSize(true); ? ? ? ?
? ? ? ? $sheet->getColumnDimension('C')->setAutoSize(true); ? ? ? ?
? ? ? ? $sheet->getColumnDimension('D')->setAutoSize(true); ? ? ? ?
? ? ? ? $sheet->getColumnDimension('E')->setAutoSize(true); ? ? ? ?
? ? ? ? $sheet->getColumnDimension('F')->setAutoSize(true); ? ? ? ?
? ? ? ? $sheet->getColumnDimension('G')->setAutoSize(true); ? ? ? ?
? ? ? ? $sheet->getColumnDimension('H')->setAutoSize(true); ? ? ? ?
? ? ? ? $field_titles=array(
? ? ? ? 'dep'=>'部門',
? ? ? ? 'room'=>'房間號',
? ? ? ? 'officep1'=>'外線號碼',
? ? ? ? 'officep2'=>'短號',
? ? ? ? 'pname'=>'人員名稱',
? ? ? ? 'mobile'=>'手機(jī)號',
? ? ? ? 'mobile_s'=>'手機(jī)短號',
? ? ? ? 'listorder'=>'排列序號',
? ? ? ? );
? ? ? ? $i=0;
? ? ? ? foreach($field_titles as $key=>$name){
? ? ? ? ? ? $ck = num2alpha($i++) . '1';
? ? ? ? ? ? $sheet->setCellValue($ck, $name);
? ? ? ? }
? ? ? ? //填充數(shù)據(jù)
? ? ? ? foreach($data as $k => $v){
? ? ? ? ? ? $k=$k+1;
? ? ? ? ? ? $num=$k+1;//數(shù)據(jù)從第二行開始錄入
? ? ? ? ? ? $i=0;
? ? ? ? ? ? foreach($field_titles as $key=>$name){
? ? ? ? ? ? ? ? $ck = num2alpha($i++) . $num;
? ? ? ? ? ? ? ? $sheet->setCellValue($ck, $v[$key]);
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? $sheet->setTitle('通訊錄');
? ? ? ? $writer = new Xlsx($spreadsheet);
? ? ? ? //$writer->save('k:/hello world.xlsx');
? ? ? ? header('Content-Type: application/vnd.ms-excel');
? ? ? ? header('Content-Disposition: attachment;filename="'.'hello world'.'.xlsx"');
? ? ? ? header('Cache-Control: max-age=0');
? ? ? ? $writer->save('php://output');
?
具體操作可以查看安裝目錄下的例子文件。
?
轉(zhuǎn)自:http://www.thinkphp.cn/code/4269.html
總結(jié)
以上是生活随笔為你收集整理的thinkPHP5.1.9 vendor 第三方库的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows环境下MinGW/gcc安
- 下一篇: 三款功能强大代码比较工具Beyond c