PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通

QQ:420220301 微信/手机:150-3210-7690
当前位置:首页 > CMS教程 > Fastadmin

关于导出功能的分享

管理员 2024-12-14
Fastadmin
21

自带导出功能似乎无法导出选择的数据,只能导出全部的数据(如果你先搜索后导出是可以导出需要的数据)。
在逛论坛的时候发现@Karson的相关帖子:使用PHPExcel进行服务端导出
表示感谢,但是在后续完善的过程中,发现,如果你导出的数据是状态 / 时间戳。导出的会依然是原始的数据,在下愚笨,无法完善@Karson帖子中的export控制器中的数据绑定,本想在循环中完善时间格式以及状态解释,后续导出后发现依然是原始数据。

$this->model                ->field($columns)                ->where($where)                ->where($whereIds)                ->chunk(100, function ($items) use (&$list, &$line, &$worksheet) {                    $styleArray = array(                        'font' => array(                            'bold'  => true,                            'color' => array('rgb' => 'FF0000'),                            'size'  => 15,                            'name'  => 'Verdana'                        ));                    $list = $items = collection($items)->toArray();                    foreach ($items as $index => $item) {                        $line++;                        $col = 0;                        foreach ($item as $field => $value) {                            $worksheet->setCellValueByColumnAndRow($col, $line, $value);  //绑定数据                            $worksheet->getStyleByColumnAndRow($col, $line)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);                            $worksheet->getCellByColumnAndRow($col, $line)->getStyle()->applyFromArray($styleArray);                            $col++;                        }                    }                });

实在没办法,只能掏出以前的代码,没想到挺有用的,在使用@Karson前端模块同时,后端完善成如下代码

/**     * 导出     */    public function export()    {        if ($this->request->isPost()) {            set_time_limit(0);            $ids = $this->request->post('ids');            if (!empty($ids)) {                $title = '加盟商数据';                $list = $this->tojoin->where('ID','in',$ids)->order('createtime desc')->select();                foreach ($list as $k=>$v)                {                    $list[$k]['createtime']=date('Y-m-d',$v['createtime']);                }                $csv_title = array('id', '日期', '姓名', '号码', '地区','品牌','来源','留言','状态');                return $this->deriveExcel($list, $csv_title, $title);            }        }    }

关于deriveExcel这个控制器的方法在下面

public function deriveExcel($list, $title,$top){        $file_name = $top."-导出时间-" . date("Y-m-d H:i:s") . ".csv";        header('Content-Type: application/vnd.ms-excel');        header('Content-Disposition: attachment;filename=' . $file_name);        header('Cache-Control: max-age=0');        $file = fopen('php://output', "a");        $limit = 100000;        $calc = 0;        foreach ($title as $v) {            $tit[] = iconv('UTF-8', 'GB2312//IGNORE', $v);        }        fputcsv($file, $tit);        foreach ($list as $v) {            $calc++;            if ($limit == $calc) {                ob_flush();                flush();                $calc = 0;            }            foreach ($v as $t) {                $tarr[] = iconv('UTF-8', 'GB2312//IGNORE', $t);            }            fputcsv($file, $tarr);            unset($tarr);        }        unset($list);        fclose($file);        exit();    }

似乎只能导出CSV格式,这是一个很大的缺陷,好了,如果还有什么问题留言,一个菜鸟的分享,有什么不足可提出共同进步!
image.png


希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。

相关推荐

扫码关注

qrcode

QQ交谈

回顶部