namespace webadmin\model;use extendspace\excel; …… 略 …… // 取出数据 $databillarr = $this->get_list_bysql($sql); // 替换数据中的 0 、1 为 是、否 // phpexcel 有内置的方法处理,但是得到的是 true/false,这里自己处理吧 $this->_formatzero($databillarr, array('taxflag', 'payflag', 'removeflag')); // 替换支付状态 foreach ($databillarr as $key => $value) { switch ($value['statustype']) { case '-1': $databillarr[$key]['statustype'] = '已取消'; break; case '-2': $databillarr[$key]['statustype'] = '已取消 已退款'; break; case '0': $databillarr[$key]['statustype'] = '待付款'; break; case '1': $databillarr[$key]['statustype'] = '待发货'; break; case '2': $databillarr[$key]['statustype'] = '待收货'; break; case '3': $databillarr[$key]['statustype'] = '已完成'; break; case '10': $databillarr[$key]['statustype'] = '退货完成'; break; case '11': $databillarr[$key]['statustype'] = '退款完成'; break; default: $databillarr[$key]['statustype'] = '无'; break; } } // 设置要导出的字段及对应的表头名称 $header = array( array('title'=>'平台订单号', 'field'=>'billcode', 'type'=>'string', 'autosize'=>true), array('title'=>'用户帐号', 'field'=>'username', 'type'=>'string', 'autosize'=>true), array('title'=>'用户昵称', 'field'=>'nickname'), array('title'=>'所属商家', 'field'=>'shopuser', 'autosize'=>true), array('title'=>'管易erp单号', 'field'=>'erpsn', 'type'=>'string', 'autosize'=>true), array('title'=>'支付单号', 'field'=>'bspaycode', 'type'=>'string', 'autosize'=>true), array('title'=>'保税批次号', 'field'=>'bsbatchcode', 'type'=>'string', 'autosize'=>true), array('title'=>'是否跨境', 'field'=>'taxflag'), array('title'=>'订单状态', 'field'=>'statustype'), …… 略 …… ); // 调用接口,执行 excel 生成及导出操作 $filename = '订单流水表_' . date('y年m月d日_his', time()); excel::export($databillarr, $header, $filename);
复制代码
二、excel.class.php
getproperties()->setcreator('test')->setlastmodifiedby('test'); // 这里设置中文乱码,还没解决 // ->settitle('这是标题') // ->setsubject('这是什么') // ->setdescription('这是描述') // ->setkeywords('这是关键字') // ->setcategory('这是目录么'); // var_dump($objphpexcel->getproperties());exit; // 获取当前要操作的活动工作表 $objactsheet = $objphpexcel->getactivesheet(); // 写入表头 foreach ($header as $k => $v) { $colindex = self::_getheaderindex($k); $objphpexcel->setactivesheetindex(0)->setcellvalue($colindex . '1', $v['title']); // 列是否需要自动适应宽度 if (!empty($v['autosize'])) { $objactsheet->getcolumndimension($colindex)->setautosize(true); } } // 写入数据,从第二行开始,第一行是表头 $rownum = 2; foreach($data as $rows){ // 遍历数据,获取一行 foreach($header as $kk => $vv){ // 单元格写入 $colindex = self::_getheaderindex($kk); // 是否指定单元格数据格式 if (!empty($vv['type'])) { // 是 switch ($vv['type']) { case 'number': $type = \phpexcel_cell_datatype::type_numeric; // 数字 break; case 'boolean': $type = \phpexcel_cell_datatype::type_bool; // 布尔值,0->false;1->true break; default: $type = \phpexcel_cell_datatype::type_string; // 字符串 break; } $objactsheet->setcellvalueexplicit($colindex.$rownum, $rows[$vv['field']], $type); } else { // 否,默认常规 $objactsheet->setcellvalue($colindex.$rownum, $rows[$vv['field']]); } } $rownum++; } // 设置行高度 rownum // $objphpexcel->getactivesheet()->getrowdimension('1')->setrowheight(22); // 设置字体和样式 $objactsheet->getdefaultstyle()->getfont()->setsize(12); // 整体字号 $objactsheet->getstyle('a1:' . self::_getheaderindex(count($header)) . '1')->getfont()->setbold(true); // 列标题加粗 // 设置工作表名称 $objactsheet->settitle('sheet1'); // 设置 header 头参数 // header(pragma: public); // header(expires: 0); // header(cache-control:must-revalidate, post-check=0, pre-check=0); // header(content-type:application/force-download); // header(content-type:application/vnd.ms-execl); // header(content-type:application/octet-stream); // header(content-type:application/download);; // header('content-disposition:attachment;filename=' . $savedfilename . ''); // header(content-transfer-encoding:binary); // 最终输出 $savedfilename = self::_iconv($filename) . '.xls'; // 导出文件名+扩展名 header('content-type: application/vnd.ms-excel'); header('content-disposition: attachment;filename=' . $savedfilename . ''); header('cache-control: max-age=0'); $objwriter = \phpexcel_iofactory::createwriter($objphpexcel, 'excel5'); $objwriter->save('php://output'); // $objwriter->save($savedfilename); } /** * 入口文件:导入 excel * @return */ public static function import() { // 引入 phpexcel 类库 // import('phpexcel.phpexcel', dirname(__file__) . '/', '.php'); } private static function _init() { } /** * 获取表头索引值,即:a,b,c...,大于 * @param array $header 用于设置表头的数组 * @return string */ private function _getheaderindex($num) { return \phpexcel_cell::stringfromcolumnindex($num); } /** * 字符转换,避免乱码 * @param string $str 待处理的字符 * @return string */ private function _iconv($str) { return iconv('utf-8', 'gb2312', $str); }}
复制代码
phpexcel