自带导出功能似乎无法导出选择的数据,只能导出全部的数据(如果你先搜索后导出是可以导出需要的数据)。
在逛论坛的时候发现@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格式,这是一个很大的缺陷,好了,如果还有什么问题留言,一个菜鸟的分享,有什么不足可提出共同进步!
希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。