常用的用php读取excel的方法有以下三种,各自有各自的优缺点。个人推荐用第三种方法,因为它可以跨平台使用。
1.
以.csv格式读取
将.xls转换成.csv的文本格式,然后再用php分析这个文件,和php分析文本没有什么区别。
优点:跨平台,效率比较高、可以读写。
缺点:只能直接使用.csv的文件,如果经常接受.xls二进制文件的话需要手工转换,不能自动化。一个文件只有一个sheet。
php有自带的分析.csv函数:fgetcsv
array
fgetcsv
(
int
$handle
[,
int
$length
[,
string
$delimiter
[,
string
$enclosure]]]
)
handle
一个由
fopen()、popen()
或
fsockopen()
产生的有效文件指针。
length
(可选)必须大于
cvs
文件内最长的一行。在
php
5
中该参数是可选的。如果忽略(在
php
5.0.4
以后的版本中设为
0)该参数的话,那么长度就没有限制,不过可能会影响执行效率。
delimiter
(可选)设置字段分界符(只允许一个字符),默认值为逗号。
enclosure
(可选)设置字段环绕符(只允许一个字符),默认值为双引号。该参数是在
php
4.3.0
中添加的。
和
fgets()
类似,只除了
fgetcsv()
解析读入的行并找出
csv
格式的字段然后返回一个包含这些字段的数组。
fgetcsv()
出错时返回
false,包括碰到文件结束时。
注意:
csv
文件中的空行将被返回为一个包含有单个
null
字段的数组,不会被当成错误。
当然也可以自己手动分析
字符串。
还可以利用fputcsv函数将行格式化为
csv
并写入文件指针。
2.
odbc链接数据源
优点:支持多种格式,cvs,
xls等。支持读写,使用标准
sql语言,和sqlserver、mysql数据库几乎完全一样。
缺点:值支持windows服务器
3.
php自定义类
优点:跨平台。某些类支持写操作。支持.xls二进制文件
常用的类有phpexcelreader、phpexcel。其中后者支持读写,但是需要php5.2以上版本。
phpexcelreader是专门用来读取文件的。返回一个数组,包含表格的所有内容。
该
class
使用的方法可以参考网站下载回来的压缩档中的
example.php。
不过我下载回来的
(版本
2009-03-30),有两点要注意:
reader.php
中的下面这行要修改
将
require_once
‘spreadsheet/excel/reader/oleread.php’;
改为
require_once
‘oleread.inc’;
example.php
中
修改
$data->setoutputencoding(’cp1251′);
为
$data->setoutputencoding(’cp936′);
example2.php
中
修改
nl2br(htmlentities($data->sheets[$sheet]['cells'][$row][$col]));
为
$table_output[$sheet]
.=
nl2br(htmlspecialchars($data->sheets[$sheet]['cells'][$row][$col]));
不然中文会有问题。
繁体的话可以修改为cp950、
日文是cp932,具体可参考codepage说明。
修改
$data->read(’jxlrwtest.xls’)
为自己的
excel
文件名,zip
档中附的
jxlrwtest.xls
应该是坏了。