最近在作一個php讀取excel存入數據庫的功能,因而用到了phpexcel,下載安裝之後只能讀取excel2003,2007之後的讀取不了,搜了不少不少方法,也用了很多時間,最後總結一下吧,但願幫助之後像我這樣的新手php
首先讀取2007的時候 一直無法load文件,最後發現好像是,沒有讀取權限吧?數據庫
說說解決方法吧apache
這時又報錯了:PHPExcel 報 Allowed memory size of 8388608 bytepost
解決方法:測試
使用 phpExcel 報 Allowed memory size of 8388608 bytes exhausted 錯誤,緣由是php頁面消耗的最大內存默認是爲 8M (在PHP的ini件裏能夠看到) ,若是文件太大 或圖片太大 在讀取的時候 會發生上述錯誤。ui
解決辦法:excel
1,修改 php.ini 將memory_limit由 8M 改爲 16M(或更大),重啓apache服務 code
2,在PHP 文件中 加入 ini_set('memory_limit','100M'); //100不行就寫10000 測試一下圖片
注意:爲了系統的其它資源的正常使用 請您不要將 memory_limit設置太大,其中-1爲不限內存
3,修改.htaccess 文檔(前提是該目錄支持.htaccess) 在文檔中新增一句:php_value memory_limit 16M(或更大)
下面是一個測試頁面:
<?php ini_set('memory_limit','200M'); //設置文件上傳大小 require_once 'Classes/PHPExcel/IOFactory.php'; $reader = PHPExcel_IOFactory::createReader('Excel2007'); // 讀取 excel 文件方式 此方法是讀取excel2007以前的版本 excel2007 爲讀取2007之後的版本 也能夠查\Classes\PHPExcel\Reader 文件夾中的類(爲全部讀取類,須要哪一個填上哪一個就行) $resource = 'test.xlsx'; if (!file_exists($resource)) { exit("$resource is not exists.\n"); } $PHPExcel = $reader->load("test.xlsx"); // 文件名稱 $sheet = $PHPExcel->getSheet(0); // 讀取第一個工做表從0讀起 $highestRow = $sheet->getHighestRow(); // 取得總行數 $highestColumn = $sheet->getHighestColumn(); // 取得總列數 echo $highestRow.$highestColumn; // 根據本身的數據表的大小修改 $arr = array(1=>'A',2=>'B',3=>'C',4=>'D',5=>'E',6=>'F'); // 每次讀取一行,再在行中循環每列的數值 for ($row = 1; $row <= $highestRow; $row++) { for ($column = 0; $column < 6; $column++) { $val = $sheet->getCellByColumnAndRow($column, $row)->getValue(); $list[$row][] = $val; } } echo "<pre>".print_r($list)."</pre>"; ?>