php - Laravel 5.4 - 读取 xlsx 文件

标签 php excel laravel

我第一次尝试实现从 xlsx 文件读取功能。 从这些例子中我发现我想出了这样的东西:

$path = base_path('public/uploads/' .$file->getClientOriginalName());
$handle = fopen($path, "r");

while (($data = fgets($handle, 10000)) !== FALSE) {
   $line = explode(';',$data);

   dd($line);

   $mall = $line[5];
   $store = $line[4];
   $price =  $line[6];
   $visitors = $line[3];

xlsx 文件有 7 列和 2000 多行,但我得到:

Undefined offset: 5

这是dd($line)的输出

array:1 [▼
  0 => b"PK\x03\x04\x14\x00\x06\x00\x08\x00\x00\x00!\x00£›ufw\x01\x00\x00p\x05\x00\x00\x13\x00\x08\x02[Content_Types].xml ¢\x04\x02( \x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00¬TËNÃ0\x10¼#ñ\x0F‘¯(qË\x01!Ô´\x07\n ◀"
]

最佳答案

读取 XLSX 文件是一条艰难/漫长的道路。一些高质量的库已经可以为您提供帮助。这是一个用于 Laravel 操作 XLSX 的库: https://github.com/rap2hpoutre/fast-excel

重新阅读您的问题后,我认为您混淆了 CSV 和 XLSX。 CSV 是一种简单的文本格式,例如:

heading1,heading2
value1,value2
value3,value4

XLSX 更像是一种二进制格式。你无法用你的小代码部分来解析它。所以你应该使用我之前提到的库。

将 XLSX 的所有行作为集合获取的示例:

$items = (new FastExcel)->import('file.xlsx');

关于php - Laravel 5.4 - 读取 xlsx 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43628624/

相关文章:

excel - excel可以清理自由文本用户输入吗?

PHP artisan migrate 不会迁移所有表

php - 深度加入Cakephp

php没有使用jquery发送数据

php - Laravel 表连接

php - Laravel 中图像大小规则的自定义验证消息

php - 我可以在 Laravel 中为 CI/CD 使用 php 部署器吗?

php - 如果数组值存在于另一个多维数组中,如何检查和替换数组

excel - 如果字符计数器大于 100,则更改字体大小的事件

excel - 找到(多输入)左边的所有内容