僅1k 的 XmlExcelExport.class.php 支持多工作簿
導出 XML格式的 Excel 數據, 支持多工作簿 http://vb2005xu.iteye.com/blog/1161779
提個意見,這個編輯器的 代碼功能在FF下根本不好使 請問為什么你們沒有檢測出來呢??
根本用不了啊<PRE style="BACKGROUND-COLOR: #c5c5c5; FONT-WEIGHT: bold" class=php name="code">// 數據導出 類文件 -- 作者 色色
/**
導出 XML格式的 Excel 數據 */ class XmlExcelExport {
/**
- 文檔頭標簽
@var string */ 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=\"
/**
- 文檔尾標簽
@var string */ private $footer = "</Workbook>";
/**
- 內容編碼
@var string */ private $sEncoding;
/**
- 是否轉換特定字段值的類型
@var boolean */ private $bConvertTypes;
/**
- 生成的Excel內工作簿的個數
@var int */ private $dWorksheetCount = 0;
/**
- 構造函數
- 使用類型轉換時要確保:頁碼和郵編號以'0'開頭 *
- @param string $sEncoding 內容編碼
@param boolean $bConvertTypes 是否轉換特定字段值的類型 */ function __construct($sEncoding = 'UTF-8', $bConvertTypes = false) { $this->bConvertTypes = $bConvertTypes; $this->sEncoding = $sEncoding; }
/**
- 返回工作簿標題,最大 字符數為 31 *
- @param string $title 工作簿標題
@return string / function getWorksheetTitle($title = 'Table1') { $title = preg_replace("/[\|:|\/|\?|\|[|]]/", "", empty($title) ? 'Table' . ($this->dWorksheetCount + 1) : $title); return substr($title, 0, 31); }
/**
- 向客戶端發送Excel頭信息 *
@param string $filename 文件名稱,不能是中文 */ function generateXMLHeader($filename){
$filename = pregreplace('/[^aA-zZ0-9\-]/', '', $filename); $filename = urlencode($filename);
// 中文名稱使用urlencode編碼后在IE中打開能保存成中文名稱的文件,但是在FF上卻是亂碼 header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Content-Type: application/force-download"); header("Content-Type: application/vnd.ms-excel; charset={$this->sEncoding}"); header("Content-Transfer-Encoding: binary"); header("Content-Disposition: attachment; filename={$filename}.xls");
echo stripslashes(sprintf($this->header, $this->sEncoding)); }
/**
- 向客戶端發送Excel結束標簽 *
@param string $filename 文件名稱,不能是中文 */ function generateXMLFoot(){ echo $this->footer; }
/**
- 開啟工作簿
@param string $title */ function worksheetStart($title){ $this->dWorksheetCount ++; echo "\n<Worksheet ss:Name=\"" . $this->getWorksheetTitle($title) . "\">\n<Table>\n"; }
/**
結束工作簿 */ function worksheetEnd(){ echo "</Table>\n</Worksheet>\n"; }
/**
- 設置表頭信息
@param array $header */ function setTableHeader(array $header){ echo $this->_parseRow($header); }
/**
- 設置表內行記錄數據
@param array $rows 多行記錄 */ function setTableRows(array $rows){ foreach ($rows as $row) echo $this->_parseRow($row); }
/**
- 將傳人的單行記錄數組轉換成 xml 標簽形式 *
@param array $array 單行記錄數組 */ private function _parseRow(array $row) { $cells = ""; foreach ($row 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";
} return "<Row>\n" . $cells . "</Row>\n"; }
}</PRE>