免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1400 | 回复: 0
打印 上一主题 下一主题

用PHP读取excel [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-14 20:20 |只看该作者 |倒序浏览

               
               
                在 PHP 中有提供 fgetcsv 和 fputcsv 让我们读取 CSV 格式的档案,先将 Excel 档案另存为 .csv 的格式,再使用前面两个函数来读取或输出档案,反正 .csv Excel 也可以打开。
  不过,.csv 中只能存一个工作表,这个应该是一个缺陷。最近正在着手写一个程序,它必须要能读取使用者上传的 Excel 档案中的数据, google 了一下,原来已经有人写了一个叫 phpExcelReader 的 class,可以让我们很方便的读取任一个工作表。它的网址如下:
http://sourceforge.net/projects/phpexcelreader/
或者
http://d.download.csdn.net/source/412364
该 class 使用的方法可以参考网站下载回来的压缩档中的 example.php。
不过我下载回来的 (版本 2007-07-05 19:57),有两点要注意:
reader.php 中的下面这行要修改
将 require_once 'Spreadsheet/Excel/Reader/OLERead.php';
改为 require_once 'oleread.inc';
example.php 中
修改 $data->setOutputEncoding('CP1251');
为 $data->setOutputEncoding('CP936');
不然中文会有问题。
繁体的话可以修改为CP950、日文是CP932,具体可参考codepage说明。
修改 $data->read('jxlrwtest.xls');
为自己的 excel 文件名,zip 档中附的 jxlrwtest.xls 应该是坏了。
用了一下,还满不错的!解决了我一个大难题。
若中文输出还是有问题可以参考以下信息(来自互联网):
试着在不同机器上测试,同一个程序,却发现有一台机器的输出有问题,Excel 中的所有中文字都没读出来。由于 Excel 的中文是以 'UTF-16LE' 的编码储存,所以 phpExcelReader 是利用 php 中的 iconv 来转码,而那台机器的 libiconv 版本太旧了,才会无法正常的转码。我将 FreeBSD 上的 libiconv 更新为 libiconv-1.11_1,并且重新编译 php4-iconv 的 ports,安装完新版的 php4-iconv 后,中文就可以正常的输出了。
不过,在编译 php4-iconv 的 ports 时出现了小插曲,原来的 php4 是使用 autoconf253,但是一直出现下面的错误讯息:
configure: error: tag name "CXX" already exists
试了一下,修改 /usr/ports/Mk/bsd.php.mk 中的下面这行:
WANT_AUTOCONF_VER= 253
改成
WANT_AUTOCONF_VER= 259
再重新 make 后,总算是把 php-iconv 编译好。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/94426/showart_1900240.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP