Laravel-Excel 导入 Excel 文件不完整的解决方法

Laravel-excel 导入Excel文件数据不完整的解决方法

遵照 Laravel 学院的关于 Laravel-excel 扩展包的安装使用教程
在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能

Excel文件导出功能没有问题,但是导入时候发现只能获取部分数据,

  1. 这是Excel文件截图: Excel文件内容截图
  2. 读取代码:
    Excel::load($filePath, function($reader) {
    $data = $reader->get();
    dd($data);
    });
  3. 我的结果:
    部分缺失的数据截图
    显然只得到了最后一列,数据不完整

    经过两天的折腾,发现原来是 表头 的问题
    把第一行表头改为英文:
    Excel表头改英文
    结果:
    成功获取到结果
    OK

    进一步研究发现,表头有关的设置在扩展包的excel.php设置文件中。
    找到这行

    'to_ascii' => true, 改为false,这下就算是中文标题也OK。

    成功获取截图
    如果不想要标题,excel.php中找到'heading' 把设置值改为false,得到无key的数组:

    问题解决!!

吐槽:

为啥不能默认'to_ascii' => false,呢??!!去github上提意见!:-1: ,有知道的phper欢迎回复告诉我真相。

本帖已被设为精华帖!
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 10

我Excel导入进去之后全都是null,找了一天问题都想放弃用php写了,看了很多东西 怀疑是编码问题,但是没找到解决的方法,没想到看到了楼主的帖子一下就好了,感谢~~~

2年前
hanzhao

确实有效,感谢楼主分享,帮SEO一波

Laravel excel 只有最后一行
Laravel Excel 只有最后一行

2年前

按照楼主的方法做可以忽略掉title获取到内容,但内容中的中文依旧不能显示。
仔细研究了一下发现其实编码格式的问题导致的,在加载的时候做了如下修改:

源数据:

file

excel.php:


 'heading'                 => false//


'to_ascii'                => true

code:


$content = file_get_contents('file.csv');
$fileType = mb_detect_encoding($content , array('UTF-8','GBK','LATIN1','BIG5'));//获取当前文本编码格式
Excel::load('file.csv',function($reader){
      $rows = $reader->all();
      ……
},$fileType);//以指定的编码格式打开文件

这样就可以打开title和内容都有中文的excel了。

1年前

终于找到解决方案了,感谢! 折腾了好久!

1年前
php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"

可以生成配置文件到config下,然后修改就好了。

1年前

laravel-excel 中文导入问题,我也来SEO一波

1年前

@张大蛤 困扰了半天,用哥们的方法一次就好了

1年前

SEO 一波 ,估计是编码的问题,换了英文就ok了。

11个月前
尼古丁

肥肠感谢 :kissing_heart:

7个月前

肥肠感谢+

5天前

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!