对于一个前端程序猿来说,php是必须了解的一门语言。至于为什么,还是百度比较靠谱,我也说不清楚。
今天的一个重构项目里面就遇到了一个读取excel的问题,这个后台是用php写的,借此机会,我大概看了一下php读取excel的过程。
其实这里面用到了一个ExcelReader类,专门用来读取excel文件,我没有仔细去研究这个类的实现过程,因为它有1000多行代码,对于我这样的php菜鸟来说,读起来会有点吃力(大家有兴趣可以读一下)。我这里主要说如何用这个类来为我们服务。
实例在哪?
文件结构如下所示,example是实例,Coupon_QQ_Uin.xls是我们要读取的文件。
Excel中包涵 Excel_oleread.inc.php 和 reader.php 文件,这也是唯一必要的两个文件。
如何演示?
只要将代码上传到服务器(本地apache服务器即可)就可以使用了。
http://localhost:8088/readexcel/example1.php
具体如何使用?
使用方式很简单,如下代码所示:
1 <?php 2 require_once "Excel/reader.php"; 3 $xl_reader= new Spreadsheet_Excel_Reader(); 4 //$data -> setOutputEncoding('CP936'); 5 $xl_reader->setOutputEncoding('GBK'); 6 $xl_reader->read("Coupon_QQ_Uin.xls"); 7 print_r($xl_reader->sheets[0]); 8 ?>
只需要在代码中引入reader.php文件,按照上面的步骤即可。值得注意的是,该类默认是以CP936解析的,所以如果excel中包涵了中文字符的话,就需要指定编码为GBK了。
数据格式:
使用这个类,可以将如下excel内容转化为php数组的形式:
1 Array 2 ( 3 [maxrow] => 0 4 [maxcol] => 0 5 [numRows] => 9 6 [numCols] => 3 7 [cells] => Array 8 ( 9 [1] => Array 10 ( 11 [1] => (请在此列输入要发放的QQ号码,单次发放的QQ号码请控制在一千个以内) 12 [2] => aaaaa 13 ) 14 [2] => Array 15 ( 16 [1] => 534144977 17 [2] => bbbbb 18 [3] => dddd 19 ) 20 [3] => Array 21 ( 22 [1] => 1599832042 23 [2] => ccccc 24 ) 25 ) 26 [cellsInfo] => Array 27 ( 28 [2] => Array 29 ( 30 [1] => Array 31 ( 32 [raw] => 534144977 33 [type] => unknown 34 ) 35 ) 36 [3] => Array 37 ( 38 [1] => Array 39 ( 40 [raw] => 1599832042 41 [type] => unknown 42 ) 43 ) 44 ) 45 )
这里有两点需要注意一下,numRows代表的行数可能会比实际的多,而且cells中的数据是从1开始索引的。这里需要我们在代码中处理一下。
over