本文實例講述了PHP實現(xiàn)導出excel數(shù)據(jù)的類庫用法。分享給大家供大家參考,具體如下:
今天一個項目要做一個PHP導出數(shù)據(jù)用excel保存,在網(wǎng)上找到一個本來是想用phpexcel的,后來發(fā)現(xiàn)太難了,就換了一個但導出的歌聲是XML
類寫的很簡單,但很實用。只能簡單的導出字符串和數(shù)字二種格式。
如果你有興趣,你可以拿去擴充了,基本夠用。
class Excel_XML{//定于私有變量,頂部標簽private $header = "<?xml version=/"1.0/" encoding=/"%s/"?/>/n<Workbook xmlns=/"urn:schemas-microsoft-com:office:spreadsheet/" xmlns:x=/"urn:schemas-microsoft-com:office:excel/" xmlns:ss=/"urn:schemas-microsoft-com:office:spreadsheet/" xmlns:html=/"http://www.w3.org/TR/REC-html40/">";//底部標簽private $footer = "</Workbook>";//定于行數(shù)組private $lines = array();//設(shè)置編碼private $sEncoding;//設(shè)置類型private $bConvertTypes;//設(shè)置sheet名稱private $sWorksheetTitle;//構(gòu)造函數(shù)public function __construct( $sEncoding = 'UTF-8',$bConvertTypes = false,$sWorksheetTitle = 'Table1'){$this->bConvertTypes = $bConvertTypes;$this->setEncoding($sEncoding);$this->setWorksheetTitle($sWorksheetTitle);}//設(shè)置編碼,在構(gòu)造函數(shù)里面默認的事UTF-8格式public function setEncoding($sEncoding){$this->sEncoding = $sEncoding;}//設(shè)置excel的頭public function setWorksheetTitle ($title){$title = preg_replace ("/[///|:|//|/?|/*|/[|/]]/", "", $title);$title = substr ($title, 0, 31);$this->sWorksheetTitle = $title;}//增加行函數(shù)(關(guān)鍵函數(shù))private function addRow ($array){$cells = ""; //設(shè)置每個單元為空foreach ($array as $k => $v){ $type = 'String'; //默認類型是字符串 if ($this->bConvertTypes === true && is_numeric($v)): //判斷類型 { $type = 'Number'; } $v = htmlentities($v, ENT_COMPAT, $this->sEncoding); $cells .= "<Cell><Data ss:Type=/"$type/">" . $v . "</Data></Cell>/n";} $this->lines[] = "<Row>/n" . $cells . "</Row>/n"; //寫入數(shù)組}//增加數(shù)組public function addArray ($array){foreach ($array as $k => $v) {$this->addRow ($v);}}//導出xmlpublic function generateXML ($filename = 'excel-export'){$filename = preg_replace('/[^aA-zZ0-9/_/-]/', '', $filename);header("Content-Type: application/vnd.ms-excel; charset=" . $this->sEncoding);header("Content-Disposition: inline; filename=/"" . $filename . ".xls/"");echo stripslashes (sprintf($this->header, $this->sEncoding));echo "/n<Worksheet ss:Name=/"" . $this->sWorksheetTitle . "/">/n<Table>/n";foreach ($this->lines as $line)echo $line;echo "</Table>/n</Worksheet>/n";echo $this->footer;}}原理很簡單,就是把數(shù)據(jù)數(shù)組,讀出來,再用XML的標簽封上,在用php自帶的header()函數(shù)告訴游覽器,就可以了。
調(diào)用:
public function import(){ $data = array( 1 => array ('學校名稱',"隊伍名稱") ); foreach($this->team as $key=>$value) { array_push($data,array($key, $value)); } $xls = new Excel_XML('UTF-8', false, 'My Test Sheet'); //實例化函數(shù) $xls->addArray($data); $xls->generateXML('school'); //導出并設(shè)置名稱}上面是的寫一個導出方式。在游覽器運行就已經(jīng)導出數(shù)組$this->team 里面的鍵和值了。
希望本文所述對大家PHP程序設(shè)計有所幫助。
新聞熱點
疑難解答
圖片精選