PhpSpreadsheet 读取csv/xlsx问题

PhpSpreadsheet 使用时 csv 格式文件里面有中文的行,需要加一个 $reader->setInputEncoding (‘GB2312’);
不然没法读取中文,但是加上之后,读取中文单元格里面的数据就有点错乱,一个列读取了好几个列数据,有没有大佬知道怎么解决,还是这是这个插件的不 bug
![![](https://cdn.learnku.com/uploads/images/202202/17/18502/4mZa3ssEAN.png!large)](cdn.learnku.com/uploads/images/202...)

讨论数量: 6
zhuzixian520

您好,请问同学,有没有尝试设置 utf8 编码,试试

3年前 评论
long1774341213 (楼主) 3年前

相同的问题,请问楼主解决了没有?

3年前 评论

用插件没解决掉,只能直接封装一个去处理读取文件的

2年前 评论

指定读取文件的编码格式:除了使用 $reader->setInputEncoding ('GB2312') 指定读取文件的编码格式外,还可以尝试其他编码格式,如 UTF-8、GBK 等。可以根据实际情况选择合适的编码格式。

使用 fgetcsv 函数读取 csv 文件:如果使用 PhpSpreadsheet 读取 csv 文件出现了问题,可以尝试使用 PHP 内置的 fgetcsv 函数来读取 csv 文件。这个函数可以指定 csv 文件的分隔符、文本限定符和编码格式等参数,可以更加灵活地处理 csv 文件。

$file = 'test.csv';
$handle = fopen($file, 'r');
if ($handle !== FALSE) {
    while (($data = fgetcsv($handle, 0, ',', '"', 'GB2312')) !== FALSE) {
        // 处理读取到的数据
        print_r($data);
    }
    fclose($handle);
}
2年前 评论