导出考核统计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);

}

}

?>