使用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。不过对于大文件现在只能使用这个方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | $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(); |
尚无评论