phpexcel是一个强大的导入导出数据到excel表的插件类功能。本人在实际的项目开发中,会经常用到,下面为了以后方便使用,现将它封装成类。以下是在tp3.2的框架上使用。
(1)去phpexcel的官网下载phpexcel。
(2)在tp的核心库的第三库类vendor文件夹中新建一个excel的文件夹(自己定义合适文件夹名称就可以了),把下载的phpexcel文件夹和PHPExcel.php放在excel文件下。
(3)tp配置文件连接数据库就不说了
导出类:ArrayToExcel.class.php
<?php
/**
*导出excel表
*
*/
class ArraryToExcel{
/**
*@param data mysql中查询的二维数组数据
*@param path PHPExcel的目录路径
*@param colAttr 列属性
*@param rowAttr 行属性
*@param options 属性选项
*@param excelObj PHPExcel的对象
*@param valiData 列的有效性数据
*/
private $data;
private $path;
private $excelObj;
private $colAttr=array(
'A'=>array(//列的属性设置
'colName'=>'',//第一行的列名
'keyName'=>'',//每一列对应的赋值数组的key值
'width'=>'' //A列的宽度
),
//可以以 A B C D E F ....递增
/* 'B'=>array(//列的属性设置
'colName'=>'',//第一行的列名
'keyName'=>'',//每一列对应的赋值数组的key值
'width'=>'' //B列的宽度
),
'C'=>array(//列的属性设置
'colName'=>'',//第一行的列名
'keyName'=>'',//每一列对应的赋值数组的key值
'width'=>'' //C列的宽度
),
'D'=>array(//列的属性设置
'colName'=>'',//第一行的列名
'keyName'=>'',//每一列对应的赋值数组的key值
'width'=>'' //D列的宽
)
*/
);
private $rowAttr=array(
'firstRowHeight'=>'', //第一行的列名的高度
'height'=>'' //2-OO无从行的高度
);
private $options=array(
'excelname'=>'导出excel', //导出的excel的文件的名称
'sheettitle'=>'sheet1', //每个工作薄的标题
'creater'=>'', //创建者,
'lastmodified'=>'', //最近修改时间
'title'=>'office xls document',//当前活动的主题
'subject'=>'office xls document',
'description'=>'数据导出',
'keywords'=>'数据导出',
'category'=>''
);
private $validData=array();
/**
*创建实例自动执行函数
*/
public function __construct($data,$colAttr,$rowAttr,$options,$validData){
/**
*导入文件的位置一定要准确,本人是把放在Vendor下,先在Vendor下建一个excel文件夹
*把下载的PHPExcel文件夹和PHPExcel.php放在excel下.
*/
$this->path=trim($path).'.';
Vendor($this->path.'PHPExcel')
$this->excelObj=new \PHPExcel();
$this->data=$data;
$this->colAttr=array_merge($this->colAttr,$colAttr);
$this->rowAttr=array_merge($this->rowAttr,$rowAttr);
$this->options=array_merge($this->options,$options);
$this->validData=array_merge($this->validData,$validData);
}
/**
* @param data 从数据库取出来的数组
* @param excelname 下载保存的文件名称
* @param sheettitle 脚本的表名称
* @param creater 创作者
*
*/
//设置要注意顺序,先把各种的格式设置好,最后才存入值
//设置属性
public function push(){
$objPHPExcel=$this->excelObj;
$objPHPExcel->getProperties()
->setCreator($this->options['creater'])
->setLastModifiedBy($this->options['lastmodified'])
->setTitle($title)
->setSubject($this->options['subject'])
->setDescription($this->options['description'])
->setKeywords($this->options['keywords'])
->setCategory($this->options['category']);
//设置sheet的name
$objPHPExcel->getActiveSheet()->setTitle($this->options['sheettitle']);
//设置为excel的第一个表
// $objPHPExcel->setActiveSheetIndex(0);
//循环设置样色
foreach($this->colAttr as $key=>$val){
//设置每一列的字体居中显示,必须要同时设置水平居中和垂直居中
$objPHPExcel->getActiveSheet()
->getStyle($key)