// 導出考核統計
function daochu(){ require_once 'outExcel.class.php'; header("Content-Type: application/vnd.ms-excel;charset=utf-8"); $kaoheCode = $_GET['kaoheCode']; $dao = new PerformanceServices(); $kaoheinfo = $dao->getKaoheInfo($kaoheCode); $filename=$kaoheinfo['KH_NAME']."考核統計"; $encoded_filename = urlencode($filename); $encoded_filename = str_replace("+", "%20", $encoded_filename); $ua = $_SERVER["HTTP_USER_AGENT"]; header('Content-Type: application/octet-stream'); if (preg_match("/MSIE/", $ua)) { header('Content-Disposition: attachment; filename="' . $encoded_filename . '.xls"'); } else if (preg_match("/Firefox/", $ua)) { header('Content-Disposition: attachment; filename*="utf8''' . $filename . '.xls"'); } else { header('Content-Disposition: attachment; filename="' . $filename . '.xls"'); } header("Pragma: no-cache"); header("Expires: 0"); $dates_excel = $dao->getTongjiInfo($kaoheCode); $mytime = date("Y-m-d H:i:s",$dates_excel['KH_TIME']); $excel=new SimpleExcel();//調用類開始 $excel->excelItem(array("統計時間",$mytime));//第一行標題,可以不要 $excel->excelItem(array("序號","姓 名","部門","分數"));//第一行標題,可以不要 $excel->colsAttrib(array("1","a","a","1"));//定義屬性,數字型為"1",字符型為"a" $scores = explode(',',$dates_excel['KH_SCORES']); //echo $scores;exit(); $i=0; foreach ($scores as $v){ $i++; $r = explode(':', $v); $userCode = $r[0]; $user = $dao->getUserInfo($userCode); $dept=$dao->getCellName($userCode); $excel->excelWrite(array($i,$user['QT_NAME'],$dept,$r[1])); } $excel->excelEnd(); }
以下是excel類 outExcel.class.php
<?php class SimpleExcel { var $rowsNum=0; var $attrib=array(); var $in_charset = 'UTF-8'; function SimpleExcel() { echo pack("ssssss",0x809,0x8,0x0,0x10,0x0,0x0); return; } function excelItem($string=array()) { for ($i=0;$i<count($string);$i++) { $curStr = $string[$i]; $curStr = $this->iconvToData($curStr); $L = strlen($curStr); echo pack("ssssss",0x204,8+$L,$this->rowsNum,$i,0x0,$L); echo $curStr; } $this->rowsNum++; return; } function colsAttrib($string=array()) { $this->attrib=$string; return; } function excelWrite($string=array()) { for ($i=0;$i<count($string);$i++) { $curStr = $string[$i]; $curStr = $this->iconvToData($curStr); if ($this->attrib[$i]=="1") { echo pack("sssss",0x203,14,$this->rowsNum,$i,0x0); echo pack("d",$curStr); } else { $L = strlen($curStr); echo pack("ssssss",0x204,8+$L,$this->rowsNum,$i,0x0,$L); echo $curStr; } } $this->rowsNum++; } function excelEnd() { echo pack("ss",0x0A,0x00); return; } function iconvToData($data) { return iconv($this->in_charset,'gb2312',$data); } } ?>