thinkPHP5.1.9 vendor 第三方库的使用
在thinkphp 5.1.x后vendor的使用方法发生变化,文档有没有详细说明。本文是自己在thinkphp5.1.9下测试成功。 thinkPHP5.1.9 vendor 第三方库的使用 1、在thinkPHP 5.1.X新版取消了Loader::import方法以及import和vendor助手函数,推荐全面采用命名空间方式的类以及自动加载机制,如果必须使用请直接改为php内置的include或者require语法。 原来的import("Vendor.Classes.PHPExcel.IOFactory");或Vendor('phpoffice.phpexcel.Classes.PHPExcel.IOFactory');方法已经不再使用。 2、在thinkPHP 5.1.X中的处理方法 2.1、必须使用composer方式安装第三方模块。否则在vendor目录下的内容无法自动加载。 这个可以通过查看K:xampphtdocstp51vendorcomposer目录下的installed.json文件知道哪些可以自动加载。 在这里手工考入的文件无法自动加载。 例子: 在K:xampphtdocstp51目录下执行: composer require phpoffice/phpspreadsheet composer require phpoffice/phpexcel 安装两个第三方电子表处理文件。 安装在K:xampphtdocstp51vendorphpoffice目录下。 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(); ? ? ? ? /*设置excel的属性*/ ? ? ? ? $objPHPExcel->getProperties()->setCreator("aaa")//创建人 ? ? ? ? ->setLastModifiedBy("aaa")//最后修改人 ? ? ? ? ->setKeywords("excel")//关键字 ? ? ? ? ->setCategory("result file");//种类 ? ? ? ? //第一行数据 ? ? ? ? $objPHPExcel->setActiveSheetIndex(0); ? ? ? ? $active = $objPHPExcel->getActiveSheet(); ? ? ? ? $field_titles=array( ? ? ? ? 'dep'=>'部门', ? ? ? ? 'room'=>'房间号', ? ? ? ? 'officep1'=>'外线号码', ? ? ? ? 'officep2'=>'短号', ? ? ? ? 'pname'=>'人员名称', ? ? ? ? 'mobile'=>'手机号', ? ? ? ? 'mobile_s'=>'手机短号', ? ? ? ? 'listorder'=>'排列序号', ? ? ? ? ); ? ? ? ? $i=0; ? ? ? ? foreach($field_titles as $key=>$name){ ? ? ? ? ? ? $ck = num2alpha($i++) . '1'; ? ? ? ? ? ? $active->setCellValue($ck,$name); ? ? ? ? } ? ? ? ? //填充数据 ? ? ? ? foreach($data as $k => $v){ ? ? ? ? ? ? $k=$k+1; ? ? ? ? ? ? $num=$k+1;//数据从第二行开始录入 ? ? ? ? ? ? $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 PhpOfficePhpSpreadsheetSpreadsheet; use PhpOfficePhpSpreadsheetWriterXlsx; use PhpOfficePhpSpreadsheetIOFactory; 处理程序: $table='xztxl'; ? ? ? ? $file='xztxl'; ? ? ? ? $data= Db::name('xztxl')->order('listorder asc,dep asc')->select(); ? ? ? ? $spreadsheet = new Spreadsheet(); ? ? ? ? $spreadsheet->getProperties()->setCreator("aaa")//创建人 ? ? ? ? ->setLastModifiedBy("aaa")//最后修改人 ? ? ? ? ->setKeywords("excel")//关键字 ? ? ? ? ->setCategory("result file");//种类 ? ? ? ? ? ? ? ? $sheet = $spreadsheet->getActiveSheet(); ? ? ? ? ? ? ? ? //第一行数据 ? ? ? ? $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'=>'部门', ? ? ? ? ); ? ? ? ? $i=0; ? ? ? ? foreach($field_titles as $key=>$name){ ? ? ? ? ? ? $ck = num2alpha($i++) . '1'; ? ? ? ? ? ? $sheet->setCellValue($ck,$name); ? ? ? ? } ? ? ? ? //填充数据 ? ? ? ? foreach($data as $k => $v){ ? ? ? ? ? ? $k=$k+1; ? ? ? ? ? ? $num=$k+1;//数据从第二行开始录入 ? ? ? ? ? ? $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'); 具体操作可以查看安装目录下的例子文件。 转自:http://www.thinkphp.cn/code/4269.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |