今天遇到一个新的需求,需要读取Excel里面的数据,然后保存到数据库里面。
我本来是打算用Java来写的,但是嫌Java麻烦,所以就找了下怎么使用PHP来读取Excel里面的数据。
我google了一下,找到phpExcelReader时一个可用去读Excel文件内容的一个PHP类。
下载地址:http://sourceforge.net/projects/phpexcelreader/
文件名:phpExcelReader.zip
包含两个必需文件:reader.php oleread.inc
首先,包含reader.php文件:require_once “reader.php”;
在这之前需要把reader.php这个文件里面require_once ‘Spreadsheet/Excel/Reader/OLERead.php’;改成require_once ‘reader.php’;
然后再把line:261 $this->_ole =& new OLERead(); 改成 $this->_ole = new OLERead();
如果在使用中遇到:Allowed memory size of 25165824 bytes exhausted (tried to allocate 24 bytes)这样的错误的话。找到php.ini配置文件把memory_limit的值改大一些就可以了。
下面给出一个案例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | require_once "Excel/reader.php"; // Excel文件($filename, $encoding); $xl_reader= new Spreadsheet_Excel_Reader ( ); // 设置输入编码 UTF-8/GB2312/CP936等等 $xl_reader->setOutputEncoding('UTF-8'); /*** * 如果服务器不支持 iconv 添加下面的代码使用 mb_convert_encoding 编码 * $data->setUTFEncoder('mb'); * **/ /*** * 默认情况下行和列的技术从1开始 * 如果要修改起始数值,添加: * $xl_reader->setRowColOffset(0); * **/ /*** * 设置工作模式 * $xl_reader->setDefaultFormat('%.2f'); * setDefaultFormat - 最大兼容模式 * * $xl_reader->setColumnFormat(4, '%.3f'); * setColumnFormat - 列的格式设置(仅适用于数字字段) * **/ $xl_reader->read('jxlrwtest.xls'); /* $xl_reader->sheets[0]['numRows'] - 行数 $xl_reader->sheets[0]['numCols'] - 列数 $xl_reader->sheets[0]['cells'][$i][$j] - 行$i 列$j里的数据 $xl_reader->sheets[0]['cellsInfo'][$i][$j] - 文件的拓展信息 $xl_reader->sheets[0]['cellsInfo'][$i][$j]['type'] = "date" | "number" | "unknown" 当type为unknown时使用raw值,因为元素中包含'0.00'的格式。 $xl_reader->sheets[0]['cellsInfo'][$i][$j]['raw'] = 未被格式化的值 $xl_reader->sheets[0]['cellsInfo'][$i][$j]['colspan'] $xl_reader->sheets[0]['cellsInfo'][$i][$j]['rowspan'] */ for ($i = 1; $i <= $xl_reader->sheets[0]['numRows']; $i++) { for ($j = 1; $j <= $xl_reader->sheets[0]['numCols']; $j++) { echo """.$xl_reader->sheets[0]['cells'][$i][$j]."","; } echo "\n"; } |
除非注明,饮水思源博客文章均为原创,转载请以链接形式标明本文地址