读取csv文件时,phpspreadsheet无法读取中文单词

时间:2018-11-30 04:09:28

标签: phpspreadsheet

我正在使用PhpSpreadsheet读取文件(csv,xls,xlsx)。 但是,当我读取csv文件时,中文单词的内容无法读取(为空)。 enter image description here

此csv文件: enter image description here

这是我的代码:

<?php
  require 'vendor/autoload.php';
  use PhpOffice\PhpSpreadsheet\Spreadsheet;
  use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
  use PhpOffice\PhpSpreadsheet\Reader\Xls;
  use PhpOffice\PhpSpreadsheet\Reader\Csv;
  $inputFileName = 'input1.csv';
  //load files
  $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFileName);
  //change the file to array
  $sheetData = $spreadsheet->getActiveSheet()->toArray(null,true,true,true);
  print_r($sheetData);
?>

我尝试过setlocale(LC_ALL, 'zh_TW.UTF-8 UTF-8');,但是没有用。

2 个答案:

答案 0 :(得分:0)

您几乎可以肯定需要使用csv阅读器的setInputEncoding()方法告诉PHPSpreadsheet csv文件使用什么编码

答案 1 :(得分:0)

如果是csv文件,则可以尝试以下代码:

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
$reader->setInputEncoding('GBK'); //this line would internally convert chinese gbk to utf-8 encoding
$spreadsheet = $reader->load($excelFile);
$data = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);