PHP整理架

我的朋友PHP

用PHP读取excel

在 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 编译好。

posted on 2008-11-27 15:40 小博 阅读(8548) 评论(0)  编辑 收藏 引用 网摘


只有注册用户登录后才能发表评论。
网站导航: