网站制作学习网PHP→正文:php输出excel php生成excel
字体:

php输出excel php生成excel

PHP 2011/12/8 14:49:01  点击:不统计

原载于:文章来源:www.forasp.cn网站制作学习
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;
 }
 
}

生成代码:原文是网站制作学习网的FoAsP.cn

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的名称');

运行试试,应该没有错,我已经做过测试

<%77w%77%2Ef%6F%72p%73%70%2Ec%6E>

·上一篇:win7安装配置memcache+php >>    ·下一篇:php输出特殊字符号 >>
推荐文章
最新文章