您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息

phpExcel在封装_PHP教程

2024/4/24 9:42:16发布4次查看
1,'name'=>'天命1'),
   array('id'=>2,'name'=>'天命2')
  );
 $header=array('id','角色名');
 $excel->setfilename('aaa');
 $excel->settitle('工作区1');
 $excel->create($data,$header);
 */
class excel {
 private $excelobj;
 private $filename='download.xls';
 /**
  * 设置下载时文件名
  * @param string $filename
  */
 public function setfilename($filename){
  $this->filename=$filename.'.xls';
 }
 /**
  * 设置标题
  * @param string $title         
  */
 public function settitle($title) {
  $this->excelobj->getactivesheet ()->settitle ( $title );
 }
 public function __construct() {
  // 先取消原框架的自动注册机制,避免和excel自动加载机制冲突
  spl_autoload_unregister ( 'autoload' );
  require library_path . '/phpexcel/phpexcel.php';
  $this->excelobj = new phpexcel ();
 }
 /**
  * 根据总数,返回列数组
  *
  * @param int $count         
  * @return array
  */
 private function getcharbynumber($data) {
  // 自动减去头部
  $count = count ( $data ['0'] );
  $keys=array();
  for($number = 1; $number    $divisor= intval($number / 26);
   $char = chr ( 64 + $number % 26 );
   $char = $divisor == 0 ? $char : chr ( 64 +$divisor) . $char;
   $keys [] = $char;
  }
  return $keys;
 }
 /**
  * 生成excel表格
  * @param array $data  二维数组
  * @param array $replace 需要替换的数组
  */
 public function create($data,$header=array(),$replace = null) {
  empty($data) and exit('没有数据');
  $keys = $this->getcharbynumber ( $data );
  $this->createheader ( $header, $keys );
  $j=0;
  foreach ( $data as $i=>$vo ) {
   $j=0;
   foreach ( $vo as $key => $item ) {
    if (isset ( $replace [$key] )){
     $this->excelobj->setactivesheetindex ( 0 )->setcellvalue ( $keys [$j] . ($i + 2), $replace [$key] [$item] );
    }else{
     $this->excelobj->setactivesheetindex ( 0 )->setcellvalue ( $keys [$j] . ($i + 2), $item );
    }
    ++$j;
   }
  }
  //输出到临时缓冲区  提供下载
  header ( content-type: application/force-download );
  header ( content-type: application/octet-stream );
  header ( content-type: application/download );
  header ( 'content-disposition:inline;filename='.$this->filename.'' );
  header ( content-transfer-encoding: binary );
  header ( cache-control: must-revalidate, post-check=0, pre-check=0 );
  header ( pragma: no-cache );
  $objwriter = phpexcel_iofactory::createwriter ( $this->excelobj, 'excel5' );
  $objwriter->save ( 'php://output' );
 }
 /**
  * 创建头部
  *
  * @param array $data         
  */
 private function createheader($header, $keys) {
  $header = array_combine ( $keys, $header );
  foreach ( $header as $key => $vo ) {
   $this->excelobj->setactivesheetindex ( 0 )->setcellvalue ( {$key}1, $vo );
  }
 }
}
使用示例:
$excel =new excel();
 $data=array(
   array('id'=>1,'name'=>'天命1'),
   array('id'=>2,'name'=>'天命2')
  );
 $header=array('id','角色名');
 $excel->setfilename('aaa');
 $excel->settitle('工作区1');
 $excel->create($data,$header);也就是说,从数据库里拿出的二维数组可以直接创建,
另外,有的字段为type,保存为int类型的,代表某一个状态的.可以参考create第三个参数
举例:
$excel =new excel();
 $data=array(
   array('id'=>1,'name'=>'天命1','type'=>1),
   array('id'=>2,'name'=>'天命2','type'=>2)
  );
        $replace['type']=array(1=>'猛男',2=>'萌女');
 $header=array('id','角色名');
 $excel->setfilename('aaa');
 $excel->settitle('工作区1');
 $excel->create($data,$header,$replace);
http://www.bkjia.com/phpjc/477193.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/477193.htmltecharticle?php /** * 数组生成excel * @author zouhao zouhao619@gmail.com * 使用示例 * $excel =new excel(); $data=array( array(id=1,name=天命1), array(id=2,name=天命2) ); $header=a...
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录