标题 | php输出excel php生成excel |
范文 | php输出excel,在本站之前采用table的形式,以header代码打开网页为excel进行保存,但是在header方法中生成的excel不是标准的,有的时候不能被微软的excel识别,传送也不好传送。 现在采用<cell>的形式进行输出。类来源于网络,做了部分解释 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>"; 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: 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; } } 生成代码: include("excelclass.php"); $data = array( array ('空格','','空格测试'),//第一行数据 array('Schwarz', '中文测试'),//第二行数据 array('√', '特殊字符测试') ); $xls = new Excel_XML('UTF-8', false, 'php输出Excel第一个sheet的名称'); $xls->addArray($data); $xls->generateXML('php生成Excel的名称'); 运行试试,应该没有错,我已经做过测试 |
随便看 |
|
在线学习网范文大全提供好词好句、学习总结、工作总结、演讲稿等写作素材及范文模板,是学习及工作的有利工具。