php 导出excel的三种方法
1.PHPExcel
thinkphp PHPExcel放到這個目錄下
/*** 導出excel表格*/ function exportExcel($data,$filename){$xlsTitle = iconv('utf-8', 'gb2312', $filename); //文件名稱//$fileName = $filename . "-" . date('YmdHis'); //or $xlsTitle 文件名稱可根據vendor("PHPExcel.PHPExcel");$objPHPExcel = new \PHPExcel();$objPHPExcel->setActiveSheetIndex(0);$dateExcel = $objPHPExcel->getActiveSheet();$dateExcel->getDefaultStyle()->getFont()->setName('微軟雅黑');$dateExcel->getDefaultStyle()->getFont()->setSize(12); //字體大小$dateExcel->getStyle('1')->getFont()->setBold(true); //第一行是否加粗$dateExcel->getStyle('1')->getFont()->setSize(13); //第一行字體大小$dateExcel->getStyle('1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//水平居中// 設置行高度$dateExcel->getDefaultRowDimension()->setRowHeight(20); //設置默認行高$dateExcel->getRowDimension('1')->setRowHeight(30); //第一行行高$rows = count($data);for ($i = 0; $i < count($data); $i++) {$row = $i + 1;$key = ord("A");//A--65$key2 = ord("@");//@--64foreach ($data[$i] as $d) {if ($key > ord("Z")) {$key2 += 1;$key = ord("A");$col = chr($key2) . chr($key);//超過26個字母時才會啟用} else {if ($key2 >= ord("A")) {$col = chr($key2) . chr($key);//超過26個字母時才會啟用} else {$col = chr($key);}}$dateExcel->setCellValue($col . $row, $d);$key++;}}//邊框樣式$styleArray = array('borders' => array('allborders' => array(//'style' => PHPExcel_Style_Border::BORDER_THICK,//邊框是粗的'style' => \PHPExcel_Style_Border::BORDER_THIN,//細邊框'color' => array('argb' => '#000'),),),);$dateExcel->getStyle('A1:' . $col . $rows)->applyFromArray($styleArray);$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(20);$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(20);ob_end_clean(); //!!!!!!!清除緩沖區,避免亂碼header('pragma:public');header('Content-type:application/vnd.ms-excel;charset=utf-8;name="' . $xlsTitle . '.xls"');header("Content-Disposition:attachment;filename=$filename.xls");$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');$objWriter->save('php://output'); }參數$data 傳入的格式為:
? ? ? ??
$filename為文件名
2.\t
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachment;filename=test_data.xls");
//輸出內容如下:?
echo???"姓名"."\t";?
echo???"生日"."\t[這有一個空格]";?
echo???"學歷"."\t";?
echo???"\n";?
echo???"張三"."\t";?
echo???"1992-10-12"."\t";?
echo???"本科"."\t";?
?>
如果遇到xls打開中文亂碼的問題,可以使用mb_convert_encoding("姓名", "gb2312", "UTF-8")這個方法,將UTF-8轉為gb2312編碼格式。注:這個根據自己的實際情況轉碼,我自己的是UTF-8輸出到xls亂碼
在使用\t輸出excel的時候,因有時間格式顯示不完全,固在時間一列上加了一個空格,輸出時間顯示,但列寬不夠,不會設置,于是選擇了第三種方式,可以添加style設置樣式
3.table?
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachment;filename=test_data.xls");
如果出現亂碼,則頭信息更換為
header("Content-type: text/html; charset=utf-8"); header("Content-type:application/octet-stream"); header("Accept-Ranges:bytes"); header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:attachment;filename=$filename.xls"); header("Pragma: no-cache"); header("Expires: 0");附:GridView導出Excel常見的5種文本格式
1) 文本:vnd.ms-excel.numberformat:@
2) 日期:vnd.ms-excel.numberformat:yyyy/mm/dd
3) 數字:vnd.ms-excel.numberformat:#,##0.00
4) 貨幣:vnd.ms-excel.numberformat:¥#,##0.00
5) 百分比:vnd.ms-excel.numberformat: #0.00%
?
?
?
? ?
總結
以上是生活随笔為你收集整理的php 导出excel的三种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 和利时DCS系统设服务器,和利时DCS系
- 下一篇: 三星 s9 android 9,美国V版