今天给大家介绍一个新的简单的方法: 首先将excel_xml.class.php放入到think目录下, 下面是excel_xml.class.php <?php namespace Think; 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./TR/REC-html40\">"; private $footer = "</Workbook>"; private $lines = array(); private $sEncoding; private $bConvertTypes; private $sWorksheetTitle; public function __construct($sEncoding = 'UTF-8', $bConvertTypes = false, $sWorksheetTitle = 'Table1'){ $this->bConvertTypes = $bConvertTypes; $this->setEncoding($sEncoding); $this->setWorksheetTitle($sWorksheetTitle); } public function setEncoding($sEncoding){ $this->sEncoding = $sEncoding; } public function setWorksheetTitle ($title){ $title = preg_replace ("/[\\\|:|\/|\?|\*|\[|\]]/", "", $title); $title = substr ($title, 0, 31); $this->sWorksheetTitle = $title; } private function addRow ($array){ $cells = ""; foreach ($array as $k => $v): $type = 'String'; if ($this->bConvertTypes === true && is_numeric($v)): $type = 'Number'; endif; $v = htmlentities($v, ENT_COMPAT, $this->sEncoding); $cells .= "<Cell><Data ss:Type=\"$type\">" . $v . "</Data></Cell>\n"; endforeach; $this->lines[] = "<Row>\n" . $cells . "</Row>\n"; } public function addArray ($array){ foreach ($array as $k => $v) $this->addRow ($v); } public function generateXML ($filename = 'excel-export'){ // correct/validate filename $filename = preg_replace('/[^aA-zZ0-9\_\-]/', '', $filename); // deliver header (as recommended in php manual) header("Content-Type: application/vnd.ms-excel; charset=" . $this->sEncoding); header("Content-Disposition: attachment; filename=\"" . $filename . ".xls\""); //作为附件方式 //header("Content-Disposition: inline; filename=\"" . $filename . ".xls\"");//在线打开方式 // print out document to the browser // need to use stripslashes for the damn ">" 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; } } ?> 2、引入excel_cml类 use Think\Excel_XML; 在控制器的方法里写 public function exexcel(){ vendor("Excel_XML"); $xls = new Excel_XML('UTF-8', false, 'My Test Sheet'); $powerinfo = D('Power')->order('power_path')->select(); //$data 是为excel放入头部信息 $data = array( 1 => '编号', 2 => '权限名称', 3 => '父id', 4 => '控制器', 5 => '操作方法', 6 => '全路径' , 7 => '等级' ); //将$data 插入到数据信息的开头 array_unshift($powerinfo, $data);//向数组插入元素 $xls->addArray($powerinfo); $xls->generateXML('my-test');//导出excel的文件名 } |
|
来自: 小马哥技术屋 > 《PHPExcel导入导出》