今天有一个朋友问了我一个PHP下载数据库表单并保存为Excel的功能问题。下面我就将代码贴出来,大家可以看下。<?php
public function exptable($name){
vendor("PHPExcel.PHPExcel");//如果这里提示类不存在,肯定是你文件夹名字不对。
$objPHPExcel = new \PHPExcel();//这里要注意‘\’ 要有这个。因为版本是3.1.2了。
$objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);//设置保存版本格式
//接下来就是写数据到表格里面去
$name = I('name');
$list =M($name)->select();
$sj=date("Y-m-d H:i:s");
$length = count($list[0]);//获取字段长度
$arr = [];//保存对应的字段名
foreach ($list[0] as $ziduan => $ziduan_v) {
$arr[] = $ziduan;
}
$A_num = 65;//对应的是A的二进制码
//输出对应的字段名
foreach ($arr as $ziduan_key=>$ziduan_value) {
//chr($A_num+$q)是获取单元格 $value[$arr[$q]] 是获取对应字段的值
$objPHPExcel->getActiveSheet()->setCellValue(chr($A_num+$ziduan_key).'1', $ziduan_value);//设置单元格内容
}
//输出所有的值
foreach ($list as $key => $value) {
$i=$key+2;//表格是从1开始的
for ($q = 0;$q < $length; $q++) {
//chr($A_num+$q)是获取单元格 $value[$arr[$q]] 是获取对应字段的值
$objPHPExcel->getActiveSheet()->setCellValue(chr($A_num+$q).$i, $value[$arr[$q]]);//设置单元格内容
}
}
//下载表格,在浏览器输出
header("Pragma: public");
ob_end_clean();//清除缓存以免乱码出现
header("Expires: 0");
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
header("Content-Type:application/force-download");
header("Content-Type:application/vnd.ms-execl");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");;
header('Content-Disposition:attachment;filename='.$name.$sj.'.xls');
header("Content-Transfer-Encoding:binary");
$name = iconv('gb2312', 'utf-8', $name); $objWriter->save($name.'.xls');
$objWriter->save('php://output');
$info_keys = M()->query("show columns from `{$name}`");
foreach($info_keys as $k=>$v){
if($v['field']!='exportdate')
$table_keys[]=$v['field'];
}
$where[implode(" | ",$table_keys)] = array('like','%'.$name.'%');
M('export')->add(array("excel"=>$name,"exportdate"=>date("Y-m-d H:i:s"),"username"=>session('nickname')));
}
记得,如果碰到数据库表名带有中文的记得到加字符编码转换$name = iconv('gb2312', 'utf-8', $name);
_________________________________________________________________________________________________
♥网友可随意转载,但请保留作者源地址。
♥如果本文对你有一点的帮助,希望不要吝惜你的一点回报,点击【赏】或者分享来给本人鼓励和支持,并帮到更多的人。
♥如果喜欢本人的作品,可以留言,希望为大家奉献更多的优秀经验
转载声明:本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动。
欢迎捐赠赞赏