【www.gdgbn.com--excel】
class ExcelParser
{
private $_data=array(0,"");
private $_excel_handle;
private $_excel=array();
/**
* 构造函数
* @param
*/
public function __construct($filename)
{
/**
* 引入excelparser类
* 普通方法为
* requires 路径."excelparser.php";
*/
import("@.Util.PHPExcelParser.excelparser","",".php");
$this->_excel_handle=new ExcelFileParser();
//错误获取
$this->checkErrors($filename);
}
/**
* 错误校验
*/
private function checkErrors($filename)
{
/**
* 方法一
*/
$error_code=$this->_excel_handle->ParseFromFile($filename);
/**
* 方法二
* $file_handle = fopen($this->_filename,"rb");
* $content = fread($file_handle,filesize($this->_filename));
* fclose($file_handle);
* $error_code = $this->_excel->ParseFromString($content);
* unset($content,$file_handle);
*/
switch($error_code)
{
case 0:
//无错误不处理
break;
case 1:
$this->_data=array(1,"文件读取错误(Linux注意读写权限)");
break;
case 2:
$this->_data=array(1,"文件太小");
break;
case 3:
$this->_data=array(1,"www.111cn.net读取Excel表头失败");
break;
case 4:
$this->_data=array(1,"文件读取错误");
break;
case 5:
$this->_data=array(1,"文件可能为空");
break;
case 6:
$this->_data=array(1,"文件不完整");
break;
case 7:
$this->_data=array(1,"读取数据错误");
break;
case 8:
$this->_data=array(1,"版本错误");
break;
}
unset($error_code);
}
/**
* Excel信息获取
*/
private function getExcelInfo()
{
if(1==$this->_data[0])return;
/**
* 获得sheet数量
* 获得sheet单元对应的行和列
*/
$this->_excel["sheet_number"]=count($this->_excel_handle->worksheet["name"]);
for($i=0;$i<$this->_excel["sheet_number"];$i++)
{
/**
* 行于列
* 注意:从0开始计数
*/
$row=$this->_excel_handle->worksheet["data"][$i]["max_row"];
$col=$this->_excel_handle->worksheet["data"][$i]["max_col"];
$this->_excel["row_number"][$i]=($row==NULL)?0:++$row;
$this->_excel["col_number"][$i]=($col==NULL)?0:++$col;
unset($row,$col);
}
}
/**
* 中文处理函数
* @return
*/
private function uc2html($str)
{
$ret = "";
for( $i=0; $i
$charcode = ord($str[$i*2])+256*ord($str[$i*2+1]);
$ret .= "".$charcode.";";
}
return mb_convert_encoding($ret,"UTF-8","HTML-ENTITIES");
}
/**
* Excel数据获取
*/
private function getExcelData()
{
if(1==$this->_data[0])return;
//修改标记
$this->_data[0]=1;
//获取数据
for($i=0;$i<$this->_excel["sheet_number"];$i++)
{
/**
* 对行循环
*/
for($j=0;$j<$this->_excel["row_number"][$i];$j++)
{
/**
* 对列循环
*/
for($k=0;$k<$this->_excel["col_number"][$i];$k++)
{
/**
* array(4) {
* ["type"] => 类型 [0字符类型1整数2浮点数3日期]
* ["font"] => 字体
* ["data"] => 数据
* ...
* }
*/
$data=$this->_excel_handle->worksheet["data"][$i]["cell"][$j][$k];
switch($data["type"])
{
case 0:
//字符类型
if($this->_excel_handle->sst["unicode"][$data["data"]])
{
//中文处理
$data["data"] = $this->uc2html($this->_excel_handle->sst["data"][$data["data"]]);
}
else
{
$data["data"] = $this->_excel_handle->sst["data"][$data["data"]];
}
break;
case 1:
//整数
//TODO
break;
case 2:
//浮点数
//TODO
break;
case 3:
//日期
//TODO
break;
}
$this->_data[1][$i][$j][$k]=$data["data"];
unset($data);
}
}
}
}
/**
* 主函数
* @return array(标识符,内容s)
*/
public function main()
{
//Excel信息获取
$this->getExcelInfo();
//Excel数据获取
$this->getExcelData();
return $this->_data;
}
}
?>