使用PHP读取Excel文件
可能这应该算得上一个很古老的问题,解决的也有多种多样,不过Internet上比较多的是Excel的保存的范例,所以写一篇如何读取Excel,可能对大家有所帮助。
- 使用COM接口调用,把Excel应用程序作为一个Server,PHP间接使用Excel来读取文件。
- 使用PHPExcel的程序包。它的优点不单单读取资料而且可以保存资料为Excel文件,同时还支持Excel 2007的格式。方法就是把Excel看作一个普通的Excel文件读取。
- 还有一种是PHP Excel Reader,它把Excel文件看作一个二进制文件读取,不过不支持新版本Excel文件。
方法2可能看起来不错,不过当你在读取资料大比较大的文件时,会有一个致命的缺点:内存溢出。因为它必须把整个Excel读入内存。有点像XML的DOM接口,不清楚是否有类型XML的SAX的方法。
方法3有类似方法2内存溢出的问题,同时对新版的支持较差。
方法1应该是属于非常传统的方式,只有支持COM程序接口就可。同时只有你能用当前安装的Excel打开此文件,你就可以通过COM接口读取文件。缺点就是你必须在你的电脑上安装Excel。不过对于大文件现在只能使用这个方法。
$doc = "test.xls" ;
$excel_app = new COM("Excel.Application", NULL, CP_UTF8) or die ("Please install the Excel. \n");
#$excel_app->Visible = 1;
$workbook = $excel_app->Workbooks->Open($doc) or die("Can't open ".$doc);
$worksheet = $workbook->WorkSheets(1);
$worksheet->activate;
$min_row = $worksheet->UsedRange->Row;
$min_col = $worksheet->UsedRange->Column;
$max_row = $worksheet->UsedRange->Rows->Count;
$max_col = $worksheet->UsedRange->Columns->Count;
for ($row = $min_row ; $row < $max_row; $row ++){
for ($column = $min_col ; $column <= $max_col; $column ++){
$value = $worksheet->Cells($row, $column)->value;
echo $value."\n";
}
}
$excel_app->Workbooks->Close();
$excel_app->Quit();
尚无评论