#1 coolcool1265

[转]使用Excel xml的方式
http://bbs.phpchina.com/forum.php?mod=viewthread&tid=87606

class Excel_XML{
/*** Header of excel document (prepended to the rows)* * Copied from the excel xml-specs.* * @access private* @var string*/private $header = "";
/*** Footer of excel document (appended to the rows)* * Copied from the excel xml-specs.* * @access private* @var string*/private $footer = "
";
/*** Document lines (rows in an array)* * @access private* @var array*/private $lines = array ();
/*** Worksheet title** Contains the title of a single worksheet** @access private * @var string*/private $worksheet_title = "Table1";
/*** Add a single row to the $document string* * @access private* @param array 1-dimensional array* @todo Row-creation should be done by $this->addArray*/private function addRow ($array){
// initialize all cells for this row$cells = "";
// foreach key -> write value into cellsforeach ($array as $k => $v):
$cells .= "{$v}\n";
endforeach;
// transform $cells content into one row$this->lines[] = "\n" . $cells . "\n";
}
/*** Add an array to the document* * This should be the only method needed to generate an excel* document.* * @access public* @param array 2-dimensional array* @todo Can be transfered to __construct() later on*/public function addArray ($array){
// run through the array and add them into rowsforeach ($array as $k => $v):$this->addRow ($v);endforeach;
}
/*** Set the worksheet title* * Checks the string for not allowed characters (:\/?*),* cuts it to maximum 31 characters and set the title. Damn* why are not-allowed chars nowhere to be found? Windows* help's no help...** @access public* @param string $title Designed title*/public function setWorksheetTitle ($title){
// strip out special chars first$title = preg_replace ("/[\\\|:|\/|\?|\*|\[|\]]/", "", $title);
// now cut it to the allowed length$title = substr ($title, 0, 31);
// set title$this->worksheet_title = $title;
}
/*** Generate the excel file* * Finally generates the excel file and uses the header() function* to deliver it to the browser.* * @access public* @param string $filename Name of excel file to generate (...xls)*/function generateXML ($filename){
// deliver header (as recommended in php manual)header("Content-Type: application/vnd.ms-excel");header("Content-Disposition: inline; filename=\"" . $filename . ".xls\"");
// print out document to the browser// need to use stripslashes for the damn ">"echo stripslashes ($this->header);echo "\nworksheet_title . "\">\n\n";echo "\n";echo implode ("\n", $this->lines);echo "
\n
\n";echo $this->footer;
}
}
?>

调用方法很简单
实例化类.然后执行addArray()方法.



如果要生成excel文件,调用generateXML方法即可。

2011-12-23 14:12:09