我正在使用 Laravel Excel 2.1。 Laravel 5.4.3。
我正在尝试读取 CSV 文件。 问题是,某些单元格在它们应该是字符串时被转换为false
。
这是文件第一行的示例: 11/10/2016 11:35,91,241,Dundee Students Association,Liar Bar,dusa-2988,Payment,�1.80,�0.00,�1.80
。 �
实际上是\ufffd
。
问题只涉及最后三行。 当我阅读文件时:
Excel::filter('chunk')->load($file_path)->chunk(250, function($sheets_collection)
{
foreach ($sheets_collection as $current_sheet) {
foreach ($current_sheet as $current_row) {
// process $current_row
}
}
}, 'UTF-8');
$current_row 包含所有内容的正确值,除了仅包含false
最后三个单元格。 我不想得到错误,而是想得到字符串。
但是,如果我仅从第一行中删除所有�
,它不仅适用于第一行而且适用于其余部分!
第一行读取为以下数组: ["11\/10\/2016 11:35",91,241,"Dundee Students Association","Liar Bar","dusa-2988","Payment",1.8,0,1.8]
。
第二行读取为以下数组: ["11\/10\/2016 11:35",91,241,"Dundee Students Association","Liar Bar","dusa-3461","Payment","\ufffd1.10","\ufffd0.00","\ufffd1.10"]
。 以与第二行类似的方式读取所有后续行。
我无法为我计划处理的每个文件清理第一行,那么有没有办法设置 Laravel-Excel 以正确从单元格中获取值作为字符串?
使用’
和é
等字符时,我也遇到了同样的问题。 你找到解决办法了吗?
编辑:将字符编码更改为windows-1252
对我有用。
@marijnz0r 非常感谢!
我曾经遇到过这样的问题,°字符。
为了解决我的问题,我这样做了:
Config::set('excel.import.encoding.input', 'windows-1252');
Config::set('excel.import.encoding.output', 'windows-1252');
Tks 有很大帮助!
最有用的评论
@marijnz0r 非常感谢!
我曾经遇到过这样的问题,°字符。
为了解决我的问题,我这样做了:
Config::set('excel.import.encoding.input', 'windows-1252'); Config::set('excel.import.encoding.output', 'windows-1252');