扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
php导出数据有两种方式,一种是通过封装好的phpexcel导出,一种是通过table导出数据,指定header就可以导出数据。
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:做网站、成都网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的芷江网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
上面是导出到excel中的方法,当然你也可以导出数据直接到数据库,或者你也可以到处数据到文件中,这个主要看你导出数据的格式要求。
看你截图显示的是数组格式,可以通过循环遍历然后导入到响应的文件中。
如果没有图片要导出的话,可以使用以下简单方式。
?php
header("Content-type:application/vnd.ms-word");
header("Content-Disposition:filename=zgfun.doc");
echo
"要导出的内容一。\r\n";
echo
"要导出的第二行。";
?
=============
如果要导出带图片的,则需要使用把网页保存为mht的格式下载。word可以直接打开。
第一步:先去下载PHPExcel插件压缩包,解压后只用到Classes文件夹里面的文件就行。
第二步:然后把Classes文件夹名称改为PHPExcel (也可以不用改),再放在thinkPHP指定的第三方类库目录文件夹Vendor下面,第三方类库目录在ThinkPHP/Library 里面
第三步:整理数据,整理成适合excel表格式的数据,不多说直接给代码
public function export(){//导出Excel表数据整理
$xlsData = M('table')-select();//查找需要导出的数据
$xlsCell = array(//设置excel文档的格式第一行就相当于标题
array('id','ID号'),
array('title','标题'),
array('time','时间'),
array('content','内容')
);
$newArray = array();//自定义数组
foreach ($xlsData as $k = $v)
{//然后把所有查找到的数据根据设置第一行的标题相对应放进数组里面
$newArray[$k]['id'] = $v['id'];
$newArray[$k]['title'] = $v['title'];
$newArray[$k]['time'] = date('Y-m-d',$v['time']);
$newArray[$k]['content'] = $v['content'];
}
$xlsName = 'Excel表数据';//设置Excel表文件名称
$this-exportExcel($xlsName,$xlsCell,$newArray);//调用PHPExcel插件,这步的函数也需要自定义
}
/**
* @param $xlsName 名称
* @param $xlsCell 参数(标题数组)
* @param $newArray 内容(数据数组)
*/
public function exportExcel($xlsName,$xlsCell,$newArray){
$xlsTitle = iconv('utf-8', 'gb2312', $xlsName);//文件名称需要转码避免乱码出错
$xlsCell_num = count($xlsCell);
$newArray_num = count($newArray);
vendor("PHPExcel.PHPExcel");//关键,利用thinkphp内置函数嵌套PHPExcel插件,如果在第二步没有改文件夹名称就这样:vendor("Classes.PHPExcel");点之前表示插件文件夹,点之后的表示PHPExcel.php文件的名称不要后缀名
$objPHPExcel = new \PHPExcel();//实例化PHPExcel
$column_key = 'A';//excel表的每个单元格都是A1,A2,A3....类似的,大写字母代表列,数字代表行,那么第一行就是标题了
foreach($xlsCell as $k=$v){
$objPHPExcel-setActiveSheetIndex(0)-setCellValue($column.'1',$v);//有多少标题列先写进第一行
$column_key++;//这样循环的好处就是不用限定有多少列,可以根据你的数据表字段有多少就导出多少列
}
for($i=0;$i$newArray_num;$i++){//第一层循环表示多少行
$column_key = 'A';
for($j=0;$j$xlsCell_num;$j++){//第二层表示列
$objPHPExcel-getActiveSheet(0)-setCellValue($column_key.($i+2), $newArray[$i][$xlsCell[$j][0]]);//($i+2)表示从第二行开始,第一行已经设置为标题了
$column_key++;
}
}
header('pragma:public');
header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
header("Content-Disposition:attachment;filename=$xlsTitle.xls");//attachment新窗口打印inline本窗口打印
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');//Excel5为xls格式,excel2007为xlsx格式
$objWriter-save('php://output');
exit;
}
运行后的效果文件图
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流