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
文件目录:
createDownExcel.php代码示例:
require_once
require_once
require_once
require_once
$mdb = mysql_connect('127.0.0.1','root','')
");
$db = mysql_select_db('test', $mdb)
");
//echo "connect success";
// 避免中文出现乱码
mysql_query("SET NAMES 'UTF8'");
$jsonData = getData();//获取需要生成excel的数据
$rand = microtime();//定义文件名
$filePath = "saveExcel/$rand.xlsx";//存放目录+文件
$tabelJsonHeader = json_encode(array(//定义excel文件头部,excel中需要多少就在这里定义多少对应关系
$url = createEXCEL($filePath,$jsonData,$tabelJsonHeader);//在PHPExcel.php中配置PHPExcel文件包含路径
echo $url;//此url如果为空说明失败,成功,则直接跳转此路径即可
//获取数据
function getData(){
}
//生成excel
function createEXCEL($filePath,$jsonData,$tableJsonHeader){
}
//暂时使用此方法,没有找到更简便的生成A-Z..的方式
function setAZ(){
}
数据库显示:
代码中我仅获取了10条记录做测试。效果见下图:
这里的A1/B1/C1对饮headerJsonData中的T0,T1,T2