1、引入excel类以及文件(可以去这里下载:http://pan.baidu.com/s/1hrLEzsw(附加代码示例))。
文件目录:

createDownExcel.php代码示例:
require_once 'PHPExcel.php';
//用于phpExcel
require_once 'PHPExcel/Writer/Excel2007.php';
//用于输出excel文档
require_once 'PHPExcel/RichText.php';
require_once 'PHPExcel/Worksheet.php';
$mdb = mysql_connect('127.0.0.1','root','')
or
die("连接数据库失败!
");
$db = mysql_select_db('test', $mdb)
or
die("选择db失败
");
//echo "connect success";
// 避免中文出现乱码
mysql_query("SET NAMES 'UTF8'");
$jsonData = getData();//获取需要生成excel的数据
$rand = microtime();//定义文件名
$filePath = "saveExcel/$rand.xlsx";//存放目录+文件
$tabelJsonHeader = json_encode(array(//定义excel文件头部,excel中需要多少就在这里定义多少对应关系
0=>"Id",//自增索引,用于根据此键获取对应的数据库值,数据库的键或者重命名的键(字段)
"T0"=>"Id",//设置表头值99999+自增索引
1=>"Name",
"T1"=>"名称",
2=>"Pid",
"T2"=>"父即ID"
));
$url = createEXCEL($filePath,$jsonData,$tabelJsonHeader);//在PHPExcel.php中配置PHPExcel文件包含路径
echo $url;//此url如果为空说明失败,成功,则直接跳转此路径即可
//获取数据
function getData(){
$sql
= "select * from `china` limit 0,10";
$query
= mysql_query($sql);
while($rs
= mysql_fetch_assoc($query)){
$row[]
= $rs;
}
return
json_encode($row);
}
//生成excel
function createEXCEL($filePath,$jsonData,$tableJsonHeader){
$objPHPExcel
= new PHPExcel();
$sheet
= $objPHPExcel->getSheet(0);
$dataArr
= json_decode($jsonData,true);
if(empty($dataArr)){
return
"";
}
$tableHeaderArr
= json_decode($tableJsonHeader,true);
$c
= count($dataArr);
$l
= count($tableHeaderArr)/2;//数字索引和关联索引实际是表示一个值
$AZ
= setAZ();
for($m=0;$m<$l;$m++){//表头
$A
= $AZ[$m]."1";
$sheet
->setCellValue($A, $tableHeaderArr["T".$m]);//
}
for($i=0;$i<$c;$i++){//行
for($m=0;$m<$l;$m++){//列
//$sheet
->setCellValue($AZ[$m].($i+2), $dataArr[$i][$tableHeaderArr[$m]]);//会将00002转换成2
$sheet
->setCellValueExplicit($AZ[$m].($i+2), $dataArr[$i][$tableHeaderArr[$m]],PHPExcel_Cell_DataType::TYPE_STRING);//设置格式
}
}
$objWriter
= new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save($filePath);
return
$filePath;
}
//暂时使用此方法,没有找到更简便的生成A-Z..的方式
function setAZ(){
return
array(
0=>"A",
1=>"B",
2=>"C",
3=>"D",
4=>"E",
5=>"F",
6=>"G",
7=>"H",
8=>"I",
9=>"J",
10=>"K",
11=>"L",
12=>"M",
13=>"N",
14=>"O",
15=>"P",
16=>"Q",
17=>"R",
18=>"S",
19=>"T",
20=>"U",
21=>"V",
22=>"W",
23=>"X",
24=>"Y",
25=>"Z",
26=>"AA",
27=>"AB",
28=>"AC",
29=>"AD",
30=>"AE",
31=>"AF",
32=>"AG",
33=>"AH",
34=>"AI",
35=>"AJ",
36=>"AK",
37=>"AL",
38=>"AM",
39=>"AN",
40=>"AO",
41=>"AP",
42=>"AQ",
43=>"AR",
44=>"AS",
45=>"AT",
46=>"AU",
47=>"AV",
48=>"AW",
49=>"AX",
50=>"AY",
51=>"AZ",
);
}
数据库显示:

代码中我仅获取了10条记录做测试。效果见下图:


这里的A1/B1/C1对饮headerJsonData中的T0,T1,T2
相关文章: