PHPExcel: 可以在我的文件中下载phpexcel放到项目中用!!
1,Excel 导出:
/** * Excel导出例子 */ public function excel($res){ $objPHPExcel = new PHPExcel(); $objPHPExcel->getProperties()->setCreator("XXX"); $objPHPExcel->setActiveSheetIndex(0); $objActSheet = $objPHPExcel->getActiveSheet(); $objActSheet->setCellValue(\'A1\', \'门店名称\'); $objActSheet->setCellValue(\'B1\', \'门店UID\'); $objActSheet->setCellValue(\'C1\', \'交易时间\'); $objActSheet->setCellValue(\'D1\', \'应收金额\'); $objActSheet->setCellValue(\'E1\', \'实收金额\'); $objActSheet->setCellValue(\'F1\', \'支付笔数\'); $objActSheet->setCellValue(\'G1\', \'取消笔数\'); $objActSheet->setCellValue(\'H1\', \'应扣手续费\'); $objActSheet->setCellValue(\'I1\', \'实扣手续费\'); $objActSheet->setCellValue(\'J1\', \'红包\'); $objActSheet->setCellValue(\'K1\', \'结算金额\'); $i = 2 ; $data = $res[0]; //数据 // $shop_list = $res[1]; $ymd = $res[2]; //时间 foreach($data as $k=>$rs){ $objActSheet->setCellValue(\'A\'.$i, !empty($rs[\'shop_name\'])?$rs[\'shop_name\']:\'\'); $objActSheet->setCellValue(\'B\'.$i, $rs[\'shop_sub_id\']); //交易时间 $objActSheet->setCellValue(\'C\'.$i, $ymd); $objActSheet->setCellValue(\'D\'.$i, !empty($rs[\'pay_price\']) ? $rs[\'pay_price\'] : 0); $objActSheet->setCellValue(\'E\'.$i, !empty($rs[\'jiao\']) ? $rs[\'jiao\'] : 0); $objActSheet->setCellValue(\'F\'.$i, !empty($rs[\'count_success\']) ? $rs[\'count_success\'] : 0); $objActSheet->setCellValue(\'G\'.$i, !empty($rs[\'count_fail\']) ? $rs[\'count_fail\'] : 0); $objActSheet->setCellValue(\'H\'.$i, !empty($rs[\'ought\']) ? $rs[\'ought\'] : 0); $objActSheet->setCellValue(\'I\'.$i, !empty($rs[\'reality_poundage\']) ? $rs[\'reality_poundage\'] : 0); $objActSheet->setCellValue(\'J\'.$i, !empty($rs[\'rebate\']) ? $rs[\'rebate\'] : 0); $objActSheet->setCellValue(\'K\'.$i, !empty($rs[\'jie\']) ? $rs[\'jie\'] : 0); $i++; } $fname = \'order_\'.time(); ob_end_clean();//清除缓冲区,避免乱码 header(\'Content-Type: application/vnd.ms-excel\'); header(\'Content-Disposition: attachment;filename="\'.$fname.\'.xls"\'); header(\'Cache-Control: max-age=0\'); // If you\'re serving to IE 9, then the following may be needed header(\'Cache-Control: max-age=1\'); // If you\'re serving to IE over SSL, then the following may be needed header (\'Expires: Mon, 26 Jul 1997 05:00:00 GMT\'); // Date in the past header (\'Last-Modified: \'.gmdate(\'D, d M Y H:i:s\').\' GMT\'); // always modified header (\'Cache-Control: cache, must-revalidate\'); // HTTP/1.1 header (\'Pragma: public\'); // HTTP/1.0 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, \'Excel5\'); $objWriter->save(\'php://output\'); }
2, CSV导出:
$filename = \'csv_\'. time(); $title="标题1,标题2,标题N"; $this->export($filename, $title); $this->csv($csv_res);
================ 下面是调用方法例子 =============================================================
/** * 导出csv文件 * @param 文件名 $filename * @param 数据 $data * @param 从数据中取指定字段 $fileds * @param 字段名 多个用逗号分割 $title * @param 数据量过大标记 $tooMuch */ public function export($filename, $title,$tooMuch=0){ $filename = @iconv(\'UTF-8\',\'GBK\',$filename.\'.csv\'); header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:attachment;filename=".$filename); header(\'Cache-Control:must-revalidate,post-check=0,pre-check=0\'); header(\'Expires:0\'); header(\'Pragma:public\'); echo @iconv(\'UTF-8\', \'GBK//IGNORE\', $title)."\r\n"; } /** * [csv 导出数据] * @param [type] $data [数据] * @return [type] [description] */ private function csv($data) { $regex = "/[ \'.,:;*?~`!@#$%^&+_=<>{}]|\]|\[|\/|\\|\"|\|/"; if (!empty($data)) { foreach ($data as $key => $value) { $value[\'shop_name\']=isset($value[\'shop_name\'])?FuncHelper::escapeEmoji($value[\'shop_name\']):\'-\'; $address=isset($value[\'address\'])?$value[\'address\']:\'-\';//门店地址 $shop_name=preg_replace($regex,"",$value[\'shop_name\']); $board_total = isset($value[\'board_total\']) ? $value[\'board_total\']:"0"; $first_login_time = isset($value[\'first_login_time\']) ? date(\'Y-m-d H:i:s\',$value[\'first_login_time\']):"-"; $goods_count = isset($value[\'goods_count\']) ? $value[\'goods_count\']:"0"; $pay_sum = isset($value[\'pay_sum\']) ? $value[\'pay_sum\']:"0"; echo \'"\'.@mb_convert_encoding($value[\'id\'], \'GBK\', \'UTF-8\').\'",\'; echo \'"\'.@mb_convert_encoding($value[\'uid\'], \'GBK\', \'UTF-8\').\'",\'; echo \'"\'.@mb_convert_encoding($shop_name, \'GBK\', \'UTF-8\').\'",\'; echo \'"\'.@mb_convert_encoding($address, \'GBK\', \'UTF-8\').\'",\'; echo \'"\'.@mb_convert_encoding($board_total, \'GBK\', \'UTF-8\').\'",\'; echo \'"\'.@mb_convert_encoding($first_login_time, \'GBK\', \'UTF-8\').\'",\'; echo \'"\'.@mb_convert_encoding($goods_count, \'GBK\', \'UTF-8\').\'",\'; echo \'"\'.@mb_convert_encoding($pay_sum, \'GBK\', \'UTF-8\').\'",\'; echo " \r\n"; } } }
另外,如果碰到导出的数字太大的话,表格会默认对数字进行科学计数,像“1.21E + ”这种的,解决方法:只需要在输出的加上 “\t” 即可,例子如下:
echo \'"\'.@mb_convert_encoding($pay_sum, \'GBK\', \'UTF-8\'). "\t" . \'",\'; ## 输出后面加上 \t
3, txt导出
只需要把上面CSV导出的 export方法改一句参数就可以 $filename = @mb_convert_encoding($filename . \'.txt\', \'GBK\', \'UTF-8\'); //.csv的文件名改为.txt // header("Content-type:application/vnd.ms-excel"); header(\'Content-Type: application/octet-stream\'); //上面的改为这句