不难,所以没有过多解释,自行看代码。
public function actionExtq()
{
@set_time_limit(0);
ini_set('memory_limit', '2000M');
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:filename=" . iconv("UTF-8", "gbk//IGNORE", "市场数据库数据") . ".csv");
// 打开PHP文件句柄,php://output 表示直接输出到浏览器
$fp = fopen('php://output', 'a');
$title = array('ID', '上级部门', '部门', '单号');
// 将中文标题转换编码,否则乱码
foreach ($title as $i => $v) {
$title[$i] = iconv('utf-8', 'gbk//IGNORE', $v);
}
// 将标题名称通过fputcsv写到文件句柄
fputcsv($fp, $title);
// $i = 0;
// while (true) {
// $list = $this->department->getList2('disabled=0 order by listorder asc limit ' . $i*300 . ',300', '' ,'*');
$list = $this->department->getList2('disabled=0 order by listorder asc', '', '*');
// if (empty($list)) break;
$lists = [];
foreach ($list as $key=>$val) {
$lists[$val['id']] = $val;
}
foreach ($lists as $ke => $vo) {
$rows = array();
$rows['id'] = $vo['id']; //添加时间
$rows['parent'] = $this->get_parent_name($lists,$vo['id']);
$rows['bumen'] = $vo['name'];
$rows['danhao'] = '';
foreach ($rows as $k => $v) {
$rows[$k] = iconv('utf-8', 'gbk//IGNORE', $v);
}
fputcsv($fp, $rows);
}
unset($list);
ob_flush();
flush();
// $i++;
// }
\Yii::$app->offcnLog->add("导出全部数据");
exit;
}
public function get_parent_name($lists,$id,$name='')
{
if(isset($name{0}))
{
$name =$lists[$id]['name'].'--'.$name;
}else{
$name = $lists[$id]['name'];
}
if($lists[$id]['parentid']>0)
{
$name = $this->get_parent_name($lists,$lists[$id]['parentid'],$name);
}
return $name;
}