另一个PHP读取Excel内容的类

之前放上来的那个读取Excel类,在不明的情况会出现死循环,现在这个不会了,而且功能更强大。当然,功能强大也代表着更难使用。。。

<?
class ReadExcel
{
var $excfile = '';
function ReadExcel($readfile)
{
$this->excfile = $readfile;
}

function read()
{
$reArr = array();
require_once 'excelparser.php';
$exc = new ExcelFileParser();
$res = $exc->ParseFromFile($this->excfile);

for($she = 0;$she < count($exc->worksheet['name']);$she++)
{
for( $col=0;$col<$exc->worksheet['data'][0]['max_col'];$col++ )
{
for($row=0;$row<$exc->worksheet['data'][0]['max_row'];$row++)
{
$data = $exc->worksheet['data'][0]['cell'][$row][$col];
$ind = $data['data'];

switch ($data['type']) {
// string
case 0:
$ind = $data['data'];
if( $exc->sst['unicode'][$ind] )
{
$s = $this->uc2html($exc->sst['data'][$ind]);
}
else
{
$s = $exc->sst['data'][$ind];
}
if( strlen(trim($s))==0 )
$reArr[$she][$col][$row] = "";
else
$reArr[$she][$col][$row] = $s;
break;
// integer number
case 1:
$s = $data['data'];
$$reArr[$she][$col][$row] = $s;
break;
// float number
case 2:
$s = $data['data'];
$reArr[$she][$col][$row] = $s;
break;
// date
case 3:
$s = str_replace ( " 00:00:00", "", gmdate("d-m-Y H:i:s",$exc->xls2tstamp($data[data])) );
$reArr[$she][$col][$row] = $s;
break;
default:
break;
}
}
}
}
return $reArr;
}


function uc2html($str) {

$ret = '';
for( $i=0; $i<strlen($str)/2; $i++ )
{
$charcode = ord($str[$i*2])+256*ord($str[$i*2+1]);//一个汉字
if($charcode > 128)
{
//convert to char
$src_str_hex = dechex($charcode);
$char1 = substr($src_str_hex,0,2);
$char2 = substr($src_str_hex,2,2);
$char=chr(hexdec($char1)).chr(hexdec($char2));//转成unicode字符

$s=$char;


$gbk = iconv("UTF-16","GBK",$s);
$ret.=$gbk;
}else{
$ret.=$str[$i*2];
}
}
return $ret;

}
}

$a = new ReadExcel("DESCSN2006031301.xls");
$tmp = $a->read();

print_r($tmp);
?>

类库下载地址: http://down.chinaz.com/s/9459.asp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值