phpexecl保存mysql_【PHP】将数据库表保存为Excel(PHPExcel)

今天有一个朋友问了我一个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);

8c756484d2b91ce4af8049efd2f1630d.png

2a9ccdeee76db7ae23a7d3c681606c0e.png

_________________________________________________________________________________________________

♥网友可随意转载,但请保留作者源地址。

♥如果本文对你有一点的帮助,希望不要吝惜你的一点回报,点击【赏】或者分享来给本人鼓励和支持,并帮到更多的人。

♥如果喜欢本人的作品,可以留言,希望为大家奉献更多的优秀经验

转载声明:本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动。

欢迎捐赠赞赏

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值