在某系统的开发过程中需要上传并读取excel文件,百度一下发现php-excel-reader这个工具比较好用,我下载到的版本是php-excel-reader-2.21,下面介绍一下我的基本用法。
解压php-excel-reader-2.21后可发现里面有三个文件:example.php,excel_reader2.php,example.xls。其中第二个php文件是该工具的核心代码,第一个php文件是一个例子,最后还有一个用于示例的excel文件。需要注意的是,该工具仅可处理excel2003格式,即扩展名为.xls的文件,我用office 2013创建的xlsx文件不能被读取。
example.php的核心内容如下:
<?php
error_reporting(E_ALL ^ E_NOTICE);
require_once 'excel_reader2.php'; //加载工具
$data = new Spreadsheet_Excel_Reader("example.xls"); //将指定excel文件交给工具进行解析,并把结果赋给$data变量
echo $data->dump(true,true);//输出结果,其中dump()函数的两个参数用于指定否需要显示excel文件中原有的行号和列号
?>
此代码的执行结果是将原来的excel文件原样输出了。那么假如我们需要逐行来获取应该怎样实现呢?我的代码如下:
<?php
error_reporting(E_ALL ^ E_NOTICE);
$filename=$_POST['filename']; //接收excel文件名
require_once '../phpCode/excel_reader2.php'; //加载工具
$data = new Spreadsheet_Excel_Reader('../upfiles/'.$filename); //调用工具,解析指定文件
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) //遍历$data中的数据。注意如果不需要读首行字段名的话,下标要从1开始,而不是0
{
$temp[]=$data->sheets[0]['cells'][$i]; //将当前行数据赋给临时变量$temp
}
if(count($temp)==0) // 如果$temp为空,则说明没有读到数据,一般可认为是原来的excel文件为空
{
$arr=array(array('len'=>0)); //生成一个json格式的数据,意思是长度为空
echo(json_encode($arr));
}
else
echo json_encode($temp); //编码为json格式后打印
?>