数据导出
我们的数据库读取到页面中,然后将我们的数据转换成xls的格式,比如成绩单这样更好看。
那么我们就要将数据进行导出,我们可以使用插架也可以不使用,不使用要简单就四五行代码就可以搞定。如果使用插架那么东西就多了。所以我选择用手写
控制器中
<?php
namespace Home\Controller;
use Think\Controller;
class DerivativeController extends Controller {
// 读取数据+搜索
public function index() {
$fileName = "学生成绩" . date('_YmdHis');//文档的名字我们也可以跟一个变量这里我写的是一个死值拼接当前时间
$xlsModel = M('student');//选表
$xlsData = $xlsModel->select();//查找内容
$data = "";
$data = $data .'<table class="bioage" border="2"><tr><td>Id</td><td>名字</td><td>年龄</td><td>性别</td><td>班级</td><td>身高cm</td><td>体重kg</td></tr>';//声名变量然后拼接一个表头
foreach ($xlsData as $v) {//遍历输出
$data = $data ."<tr><td>{$v['id']}</td> " .
"<td>{$v['name']} </td> " .
"<td>{$v['age']} </td> " .
"<td>{$v['gender']} </td> " .
"<td>{$v['class']} </td> " .
"<td>{$v['stature']} </td> " .
"<td>{$v['weight']} </td> " .
"</tr>";//声名变量拼接输出 所有值
}
$data = $data . "</table>";//结束标签
//dump($data);exit;//打印看看是否有值
header('pragma:public');//缓存问题,开启之后为了防止有缓存
header('Content-type:application/vnd.ms-excel;charset=utf-8;name="' . $fileName . '.xls"');//类型为xls表格的形式是。
header("Content-Disposition:attachment;filename=$fileName.xls"); //弹出下载窗口,下载文件的名字就为我们前面传过来的名字格式为表格
echo "<html>"."<meta charset='UTF-8'>".$data."</html>";//输出我们的内容在xls中我们防止的乱码
}
}