发表时间:2014-09-05来源:网络
<?php
/**
* 数组生成Excel
* @author zouhao zouhao619@gmail.com
* 使用示例
* $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);
*/
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 <=$count; $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);
CI框架连接数据库配置操作以及多数据库操作
asp 简单读取数据表并列出来 ASP如何快速从数据库读取大量数据
C语言关键字及其解释介绍 C语言32个关键字详解
C语言中sizeof是什么意思 c语言里sizeof怎样用法详解
PHP中的魔术方法 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep,
PHP中的(++i)前缀自增 和 (i++)后缀自增
将视频设置为Android手机开机动画的教程
最简单的asp登陆界面代码 asp登陆界面源代码详细介绍
常用dos命令及语法
PHP中include和require区别之我见
扬子餐饮app下载v1.4.9 安卓版
21.47MB |生活服务
云视通生活最新版(改名小维智慧家庭)下载v5.1.16 安卓官方版
90.93MB |拍摄美化
企业查询宝app下载v9.0.5 安卓版
65.83MB |商务办公
云上南阳app下载v5.6.0 安卓官方版
135.12M |资讯阅读
蓝舞者app拉丁舞音乐下载v3.6.40 安卓版
101.53MB |学习教育
neye3c摄像头app下载v4.5.5.2 安卓官方版
168.42MB |拍摄美化
布仓软件下载v4.1.9 安卓最新版
31.46MB |生活服务
zdfit软件下载v2.0.10 安卓官方版
113.91MB |生活服务
2014-09-05
2022-03-20
2022-03-21
2022-03-24
2014-09-05
2014-09-05
2015-07-05
2014-09-05
2022-03-21
2014-09-05