$filePath = '2520_1016722004.xlsx';
require_once('PHPExcel.php');
$PHPReader = new PHPExcel_Reader_Excel2007();
if( ! $PHPReader->canRead($filePath)){
$PHPReader = new PHPExcel_Reader_Excel5();
if( ! $PHPReader->canRead($filePath)){
echo '';
exit;
}
}
$PHPExcel = new PHPExcel();
$PHPExcel = $PHPReader->load($filePath);
如代码所示,$filePath = '2520_1016722004.xlsx';是我为了测试这个问题,特地在该 PHP 文件的同目录下的一个文档,同时存在‘ 2520_1016722004.xlsx ’以及‘ 2520_1016722004.xls ’,这两个文档都是相同内容,使用 Microsoft Excel 2015 保存的两种格式,如果读取的是 xls 格式的文档,后面代码都能正确运行,但是读取 xlsx 格式的文档,均会卡在$PHPExcel = $PHPReader->load($filePath);处,请问如何解决?
1
GreatHumorist 2017-09-25 21:46:58 +08:00 2
PHPExcel 已经不支持了
建议使用[PHPSpreadsheet]( https://github.com/PHPOffice/PhpSpreadsheet) 如果还是不能读取的话把文件附上来,我帮你看看 |
2
Wilon OP @GreatHumorist 不好意思,我今天可能是临时客串 PHP 的程序员,我现在的环境是 ThinkPHP3.2.3,请问可以用 PHPSpreadsheet 这个吗,因为我发现这个的版本支持只维护到最近六个月的 PHP
|
3
GreatHumorist 2017-09-25 22:13:37 +08:00
@Wilon 你发一个脱敏的测试文件看看呢,我看能不能用 phpexcel 解决
|
4
littleylv 2017-09-25 22:17:11 +08:00
我早放弃 PHPExcel 了,入了 box/spout 的坑,好用,谁用谁知道
|
6
GreatHumorist 2017-09-25 22:26:23 +08:00
@littleylv PHPSpreadsheet 更好用,诚心推荐
|
7
Wilon OP |
8
littleylv 2017-09-25 22:28:18 +08:00
@GreatHumorist #6 谢谢,后面看看
|
9
Wilon OP @GreatHumorist 麻烦了,不好意思
|
10
GreatHumorist 2017-09-25 23:29:42 +08:00
@Wilon 亲测是没有问题的,我用 composer 安装的,然后测试代码如下
<?php require './vendor/autoload.php'; $filePath = 'test.xlsx'; $reader = \PHPExcel_IOFactory::createReader('Excel2007'); $excel = $reader->load($filePath); echo $excel->getActiveSheet()->getCell('B2')->getValue(); 正确返回 123 你正确下载下代码,检测下 zip 这些扩展开启没有,因为 xlsx 格式的文件实质是 zip 压缩包,里面是各种 xml 文件,phpexcel 读取的话会用 zip 扩展解压后获取里面的内容。 |
11
Wilon OP @GreatHumorist 首先非常感谢,主要的扩展是哪些? require_once('PHPExcel.php');只引用这个不行吗?还是得像你一样 require './vendor/autoload.php'; ,这是把 PHPExcel 放在了 Vendor 里了吗?
|
12
GreatHumorist 2017-09-26 09:51:37 +08:00
@Wilon 看你怎么安装的,如果你只是直接下载的发行包的话可以不像我那样,因为我是用 composer 包管理安装的
这是官方的要求: Requirements PHP version 5.2.0 or higher PHP extension php_zip enabled (required if you need PHPExcel to handle .xlsx .ods or .gnumeric files) PHP extension php_xml enabled PHP extension php_gd2 enabled (optional, but required for exact column width autocalculation) 直接用 PHPExcel.php 应该也是可以的 |