Heim  >  Artikel  >  Backend-Entwicklung  >  PHP读取EXCEL的方法 上

PHP读取EXCEL的方法 上

WBOY
WBOYOriginal
2016-08-08 09:31:061482Durchsuche

常用的用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 字段的数组,不会被当成错误。

当然也可以自己手动分析字符串。

例子:

<?php $row = 1;
echo "<pre class="brush:php;toolbar:false">
"; $handle = fopen("three.csv","r"); while ($data = fgetcsv($handle, 1000, ",")) { $num = count($data); $row++; echo ""; for ($c=0; $c ".$data[$c].""; } echo ""; } echo "
"; fclose($handle); ?>

还可以利用fputcsv函数将行格式化为 CSV 并写入文件指针。

2. ODBC链接数据源

优点:支持多种格式,cvs, xls等。支持读写,使用标准SQL语言,和SQLSERVER、MYSQL数据库几乎完全一样。
缺点:只支持windows服务器

3. PHP自定义类(文件有些大我放到了下一章)

优点:跨平台。某些类支持写操作。支持.xls二进制文件

test.php 中
修改 $data->setOutputEncoding('CP1251');

为 $data->setOutputEncoding('CP936');

简体中文cp936、繁体的话可以修改为CP950、日文是CP932,等。

修改 $data->read('three.xls') 为自己的 excel 文件名。

以上就介绍了PHP读取EXCEL的方法 上,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:nginx upstream timed out 10060错误解决Nächster Artikel:nginx 超时