首先我们使用composer安装 PHPExcel
composer require phpoffice/phpexcel
安装完成后,
1 2 3 4 5 6 7 8 9 10 |
$objPHPExcel = new \PHPExcel(); $objPHPExcel ->getProperties() //获得文件属性对象,给下文提供设置资源 ->setCreator("天明") //设置文件的创建者 ->setLastModifiedBy("天明") //设置最后修改者 ->setTitle("天明的表格") //设置标题 ->setSubject("Office2007 XLSX Test Document" ) //设置主题 ->setDescription("") //设置备注 ->setKeywords( "office 2007 openxmlphp") //设置标记 ->setCategory( "Test resultfile"); //设置类别 |
基本操作
1 2 3 4 5 6 7 |
// $objPHPExcel->setActiveSheetIndex(0) //设置第一个内置表(一个xls文件里可以有多个表)为活动的 // ->setCellValue( 'A1', 'Hello' ) //给表的单元格设置数据 // ->setCellValue( 'B2', 'world!' ) //数据格式可以为字符串 // ->setCellValue( 'C1',12) //数字型 // ->setCellValue( 'D2',12) // // ->setCellValue( 'D3', true ) //布尔型 // ->setCellValue( 'D4', '=SUM(C1:D2)' );//公式 |
记录一个实例:
首先查询我的数据库字段注释!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
/** * 获取数据库字段注释 * @param string $table_name 数据表名称(必须,不含前缀) * @param string $field 字段名称(默认获取全部字段,单个字段请输入字段名称) * @param string $table_schema 数据库名称(可选) * @return string */ public static function tableDesc($table_name = '', $field = true, $table_schema = ''){ // 接收参数 $database = config('database'); $table_schema = empty($table_schema) ? $database['database'] : $table_schema; $table_name = $database['prefix'] . $table_name; // 缓存名称 $fieldName = $field === true ? 'allField' : $field; $cacheKeyName = 'db_' . $table_schema . '_' . $table_name . '_' . $fieldName; // 处理参数 $param = [ $table_name, $table_schema ]; // 字段 $columeName = ''; if($field !== true){ $param[] = $field; $columeName = "AND COLUMN_NAME = ?"; } // 查询结果 $result = Db :: query("SELECT COLUMN_NAME as field,column_comment as comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = ? AND table_schema = ? $columeName", $param); if(empty($result) && $field !== true){ return $table_name . '表' . $field . '字段不存在'; } return count($result) == 1 ? reset($data) : $result; } |
然后把字段注释写入Excel并且下载!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
$objPHPExcel = new \PHPExcel(); $objPHPExcel ->getProperties() //获得文件属性对象,给下文提供设置资源 ->setCreator("天明") //设置文件的创建者 ->setLastModifiedBy("天明") //设置最后修改者 ->setTitle("天明的表格") //设置标题 ->setSubject("Office2007 XLSX Test Document" ) //设置主题 ->setDescription("") //设置备注 ->setKeywords( "office 2007 openxmlphp") //设置标记 ->setCategory( "Test resultfile"); //设置类别 $headerData = self::tableDesc('data'); $numIndex = 1; foreach ($headerData as $k=> $v){ $numIndex++; $objPHPExcel->setActiveSheetIndex(0) ->setCellValue( 'A'.$numIndex, $v['comment']); //.'('.$v['field'].')' } $objActSheet =$objPHPExcel->getActiveSheet(); $objActSheet->getColumnDimension('A')->setAutoSize(true); $objActSheet->setTitle('第一页'); header('Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition:attachment;filename="01simple.xlsx"'); header('Cache-Control:max-age=0'); $objWriter = \PHPExcel_IOFactory:: createWriter($objPHPExcel, 'Excel2007'); $objWriter->save( 'php://output'); exit; |