zerahuang

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

对于一个前端程序猿来说,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

 

posted on 2013-03-27 20:10  zerahuang  阅读(509)  评论(0编辑  收藏  举报