WEB教程基地:www.91ctc.com为你搭建学习WEB技术的优秀平台
网站地图 加入收藏 设为首页
您的位置:本站首页>>PHP>>PHP实例:使用phpExcelReader导入Excel2003文档到MySQL数据库中

PHP实例:使用phpExcelReader导入Excel2003文档到MySQL数据库中

[ 录入者:91ctc | 时间:2013-08-03 01:10:22 | 作者: 91ctc| 来源:本站 | 浏览: 次 ]

本文介绍使用phpExcelReader导入Excel2003文档到MySQL数据库中的方法。但是该方法不支持读取xlsx文档。如果要同时支持xlsx文档的,请看这个:

使用PHPExcel导入Excel2003文档和Excel2007文档到MySQL数据库中

PHP Code复制内容到剪贴板
  1. require_once 'phpExcelReader/Excel/reader.php';   
  2. $data = new Spreadsheet_Excel_Reader();    
  3.     
  4. $data->setOutputEncoding('gbk');   
  5. $data->read('Book1.xls');    
  6.   
  7. $db = mysql_connect('localhost''root''root'or die("Could not connect to database.");   
  8. mysql_query("set names 'gbk'");   
  9. mysql_select_db('test');     
  10. error_reporting(E_ALL ^ E_NOTICE);   
  11.   
  12. for ($i = 2; $i <= $data->sheets[0]['numRows']; $i++) {   
  13.     
  14.     /*  
  15.     echo $data->sheets[0]['cells'][$i][1]."<br/>";  
  16.     echo $data->sheets[0]['cells'][$i][2]."<br/>";  
  17.     echo $data->sheets[0]['cells'][$i][3]."<br/>";<br />  
  18.     */  
  19.     $a = $data->sheets[0]['cells'][$i][1];//取得第一列的数据   
  20.     $b = $data->sheets[0]['cells'][$i][2];//取得第二列的数据   
  21.     $c = $data->sheets[0]['cells'][$i][3];//取得第三列的数据   
  22.        
  23.     $sql = "INSERT INTO z_test_importexcel (duty_date,name_am,name_pm) VALUES('$a','$b','$c')";    
  24.     echo $sql.'<br />';    
  25.     $res = mysql_query($sql)  or die ("错误:$sql");   
  26. }  

上述代码$data->read('Book1.xls'); 引用一点问题都没有,如果改成$data->read('Book1.xlsx');系统运行的时候会出现:

phpExcelReader读取Excel2007时候的报错

所以,xlsx格式,该类库不支持。

比较phpExcelReader和PHPExcel

PHPExcel是一个相当强大的 MS Office Excel 文档生成类库,当需要输出比较复杂格式数据的时候,PHPExcel 是个不错的选择,并且文档做的也比较好,有比较好的函数参考手册。

但PHPExcel在处理Excel2007(OOXML)文档时会有一点问题。由于PHPExcel是先将Excel文件加载进内存,并在内存中构建OOXML的文档结构,所以在处理复杂或不规范的Excel2007文档时会造成进程内容占用过大,而且初始化文档模型的时间开销也很大,甚至不能接受。

以上问题在Excel1.6.5之前的版本还不是特别严重,因为PHPExcel1.6.5之前的版本,PHPExcel只会对列号在“A-ZZ”范围内的单元格进行处理,自PHPExcel1.6.5起去掉了这个限制,故如果Excel2007文档不规范可能会造成在内存中构建文档模型的时候内存开销过大。

在调研过程中,下载了PHPExcel1.6.4-PHPExcel1.7.2版本进行测试,测试时使用的Excel文档的单元格数据验证部分定义的不规范,5个验证条件涉及的单元格都在4000个以上,实际有用的单元格只有几个,在PHPExcel1.6.4之前的版本,会忽略掉ZZ列之后的单元格,由于有此限制除了内存占用多一些,加载时间长一些外一般不会出现严重的问题,但在PHPExcel1.6.5之后的版本直接在加载验证条件部分出现了内存溢出(内存限制设置为128MB,溢出时大概加载了1/2的验证条件)。

因此,如果使用PHPExcel进行解析Excel2007文档时,尽可能的使用规范的文档模板。在不能控制Excel2007文档的情况下,如果Excel2007文档的结构相对比较简单,但是要处理大型复杂的OOXML文档,最好还是根据实际的需求来开发简单的组件来进行解析,或根据实际情况对PHPExcel进行修改或裁剪。

PHPExcelReader

看到这个名字就可以推断出这个第三方类库只能用于读取Excel而不能用于生成Excel,网上关于PHPExcelReader的文章比较多,但是PHPExcelReader的问题也比较多,最后更新时间是(这个库的确比较老了),并且仅支持BIFF格式(Excel97 - Excel2003),解析速度较快。只能处理简单的Excel文档,不支持富文本的处理,并且在处理日期类型时会有bug,个人感觉不是很实用。

PHP处理Excel方法总结

综上所述,各种处理Excel的方法都有各自的优点和缺点,网络上PHP处理Excel的第三方库虽然为数不少,但真正能应用与生产环境的并不多,以上介绍的PHPExcel及PHPExcelReader只是暂时发现的比较好用的第三方库。

在实际的开发中,如果涉及到需要处理Excel的需求是,比较推荐的是以下几种方法:

使用第三方库PHPExcel进行解析

原因:在第三方库中PHPExcel相对来说从功能,质量到维护对算比较好的。

PHP调用第三方程序或服务来处理Excel

原因:相对于PHP来说Java、Python等语言的相关第三方组件可能会更成熟些,而且如果发现所选用的组件出现问题,比较容易进行更换。

自己开发简单的组件来解析Excel

原因:相对来说Excel的文件结构不是很复杂,自己开发简单的组件成本也不会很大。

PS:如果您对本文有纠错、质疑、转载、举报等问题时,请加入到网站Q&Q&群:86783981(验证信息:91ctc.com)提交您的问题,让大伙一块讨论。谢谢您的支持,计算机教程中心网将会一如既往的提供优秀资源助您一臂之力!
关闭】【返回顶部

您可能感兴趣的文章
91ctc.com 网络先锋,引领科技,本站原创作品[转载请注明出处]。网站Q&Q&群:86783981(验证信息:91ctc.com)
Copyright© 2010-2017 计算机教程中心网 . All rights reserved. 苏ICP备11081842号