导出考核统计php导出Excelde应用
导出考核统计php导出Excelde应用
// 导出考核统计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);
}
}
?>