本文實(shí)例為大家分享了PHP輸出Excel PHPExcel的具體代碼,供大家參考,具體內(nèi)容如下
方法1:
/** * 創(chuàng)建(導(dǎo)出)Excel數(shù)據(jù)表格 * @param array $list 要導(dǎo)出的數(shù)組格式的數(shù)據(jù) * @param string $filename 導(dǎo)出的Excel表格數(shù)據(jù)表的文件名 * @param array $header Excel表格的表頭 * @param array $index $list數(shù)組中與Excel表格表頭$header中每個(gè)項(xiàng)目對(duì)應(yīng)的字段的名字(key值) * 比如: $header = array('編號(hào)','姓名','性別','年齡'); * $index = array('id','username','sex','age'); * $list = array(array('id'=>1,'username'=>'YQJ','sex'=>'男','age'=>24)); * @return [array] [數(shù)組] */ function createtable($list,$filename,$header=array(),$index = array()){ header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:filename=".$filename.".xls"); $teble_header = implode("\t",$header); $strexport = $teble_header."\r"; foreach ($list as $row){ foreach($index as $val){ $strexport.=$row[$val]."\t"; } $strexport.="\r"; } $strexport=iconv('UTF-8',"GB2312//IGNORE",$strexport); exit($strexport); }
此方法代碼量少,可以放在thinkPHP5中的公共函數(shù)common.php中,方便調(diào)用,但是對(duì)輸出的Excel表格無(wú)法設(shè)置屬性
方法2:
首先需要到下載SDK,GitHub下載地址,下載后解壓,我們只需要里邊的Classes文件夾,將其改名為PHPExcel。我這里是基于thinkPHP5的,可以放置在app同級(jí)目錄的extend中。
/* PHPExcel */ public function excel(){ Loader::import('PHPExcel.PHPExcel'); //thinkphp5加載類庫(kù) $objPHPExcel = new \PHPExcel(); //實(shí)例化PHPExcel類, $objSheet = $objPHPExcel->getActiveSheet(); //獲取當(dāng)前活動(dòng)的sheet對(duì)象 $objSheet->setTitle("test"); //給當(dāng)前活動(dòng)sheet起個(gè)名稱 /*字符串方式填充數(shù)據(jù),開(kāi)發(fā)中可以將數(shù)據(jù)庫(kù)取出的數(shù)據(jù)根據(jù)具體情況遍歷填充*/ $objSheet->setCellValue("A1","姓名")->setCellValue("B1","分?jǐn)?shù)")->setCellValue("C1","班級(jí)"); //填充數(shù)據(jù) // $objSheet->setCellValue("A2","張三")->setCellValue("B2","3434346354634563443634634634563")->setCellValue("C2","一班"); //填充數(shù)據(jù) $objSheet->setCellValue("A2","張三")->setCellValueExplicit("B2","123216785321321321312",\PHPExcel_Cell_DataType::TYPE_STRING)->setCellValue("C2","一班");//填充數(shù)據(jù)時(shí)添加此方法,并且使用getNumberFormat方法和setFormatCode方法設(shè)置,可以讓如訂單號(hào)等長(zhǎng)串?dāng)?shù)字不使用科學(xué)計(jì)數(shù)法 /*數(shù)組方式填充數(shù)據(jù)*/ $arr = [ [], //空出第一行,打印出的效果將空出第一行 ['','信息'], //空出第一列,打印出的效果將空出第一列 ['',"姓名\nname",'年齡','性別','分?jǐn)?shù)','年級(jí)'], //空出第一列,*這里的\n是為了*配合setWrapText自動(dòng)換行 ['','李四','33','男','33543653456346363646','4'], ['','李四','33','男','54546456456447478548','4'], ['','李四','33','男','56635374658465632545','5'], ['','李四','33','男','87473457856856745646','5'], ['','李四','33','男','32','7'], ['','李四','33','男','98','5'], ]; $objSheet->fromArray($arr); //填充數(shù)組數(shù)據(jù),較為消耗資源且閱讀不便,不推薦 /*樣式配置信息--方法配置*/ $objSheet->mergecells("B2:F2"); //合并單元格 $objSheet->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER)->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//設(shè)置excel文件默認(rèn)水平垂直方向居中,垂直setVertical,水平setHorizontal,因?yàn)槭腔趖hinkPHP5所以這里PHPExcel_Style_Alignment前使用"\"引入 $objSheet->getDefaultStyle()->getFont()->setSize(14)->setName("微軟雅黑");//設(shè)置所有默認(rèn)字體大小和格式 $objSheet->getStyle("B2:F2")->getFont()->setSize(20)->setBold(true);//設(shè)置指定范圍內(nèi)字體大小和加粗 $objSheet->getDefaultRowDimension()->setRowHeight(33);//設(shè)置所有行默認(rèn)行高 $objSheet->getRowDimension(2)->setRowHeight(50);//設(shè)置指定行(第二行)行高 $objSheet->getStyle("B2:F2")->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('EEC591');//指定填充背景顏色,不需要加"#"定義樣式數(shù)組,字體,背景,邊框等都此方法設(shè)置,這里展示邊框 $objSheet->getStyle("B3")->getAlignment()->setWrapText(true);//設(shè)置文字自動(dòng)換行,要用getStyle()方法選中范圍,同時(shí)要在內(nèi)容中添加"\n",而且該內(nèi)容要用雙引號(hào)才會(huì)解析 $objSheet->getStyle("E")->getNumberFormat()->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT);//設(shè)置某列單元格格式為文本格式,便于禁用科學(xué)計(jì)數(shù)法 /*數(shù)組配置*/ $styleArray = array( 'borders' => array( 'outline' => array( 'style' => \PHPExcel_Style_Border::BORDER_THICK, 'color' => array('rgb' => 'EE0000'), ), ), ); $objSheet->getStyle("B3:G3")->applyFromArray($styleArray);//設(shè)置指定區(qū)域的邊框,設(shè)置邊框必須要使用getStyle()選中范圍 $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007');//生成objWriter對(duì)象,Excel2007(xlsx)為指定格式,還有Excel5表示Excel2003(xls) /*瀏覽器查看,瀏覽器保存*/ self::browser_excel('Excel2007','test.xlsx');//輸出到瀏覽器,參數(shù)1位Excel類型可為Excel5和Excel2007,第二個(gè)參數(shù)為文件名(需加后綴名),此方法為自定義 $objWriter->save("php://output"); //save()里可以直接填寫保存路徑 /*保存到知道路徑*/ $objWriter->save(ROOT_PATH."excel.xlsx"); //save()里可以直接填寫保存路徑 }
自定義的瀏覽器header設(shè)置方法
/* 瀏覽器打開(kāi)時(shí)設(shè)置header頭 $type excel版本類型 Excel5---Excel2003, Excel2007 $filename 輸出的文件名 */ function browser_excel($type,$filename){ if($type=="Excel5"){ header('Content-Type: application/vnd.ms-excel');//告訴瀏覽器將要輸出excel03文件 }else{ header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');//告訴瀏覽器數(shù)據(jù)excel07文件 } header('Content-Disposition: attachment;filename="'.$filename.'"');//告訴瀏覽器將輸出文件的名稱,要是沒(méi)有設(shè)置,會(huì)把當(dāng)前文件名設(shè)置為名稱 header('Cache-Control: max-age=0');//禁止緩存 }
想要獲取更完善的配置信息,百度PHPExcel中文文檔有很多參考資料。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
標(biāo)簽:威海 泰州 成都 林芝 張家口 梅州 山東 巴中
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP輸出Excel PHPExcel的方法》,本文關(guān)鍵詞 PHP,輸出,Excel,PHPExcel,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。