3

我有一个 Json,对其进行解码,用 PHP 将其写入 CSV 文件,借助 PHPexcel 将 CSV 转换为 .xls

目标是正确地从 JSON 导出到 excel 文件中。我在编码时遇到问题,主要是 Excel for Mac 2011,它不支持 UTF-8 CSV 文件:链接如果我在我的 Mac 上预览它(空格键),它看起来编码良好。麻烦的是excel。

首先是CSV的代码:

$file_csv = fopen('files/file.csv', 'w');

然后是 JSON:

$response_data = json_decode($connection->response['response'], true);
foreach ($response_data as $value)
  {
  //take the data I have 10 strings here in reality
  $text_lang = $value['lang'];
  $date = $value['date'];
  //insert into the csv
  $details = array($text_lang, $date );
  fputcsv($file_csv, $details);
};
fclose($file_csv);

现在,如果我用 excel 导入这个 CSV,我会遇到 UTF-8 的问题。如果我使用文本编辑器(例如 Textmate)将其转换为 UTF-16LE,然后将其导入 Excel,一切都很顺利。

以及用于从此处创建 .xls 的 PHPExcel 代码:

$objReader = PHPExcel_IOFactory::createReader('CSV');
$objPHPExcel = $objReader->load('files/file.csv');  
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('files/summary.xls');

summary.xls 在 UTF-8 上损坏,打开时需要修复。


我的第一次尝试是在 PHP 中将上述file.csv内容转换为 UTF-16LE,看看是否可以使用 excel。我之前用过iconvfputcsvexcel显示中文单词...

现在我想将 csv 文件编码为 UTF-16LE 并用 PHPExcel 很好地加载它。我使用了以下几行但没有工作。可能是因为我创建的 .csvincov部分是(?)UTF-8 和 UTF-16LE。

$objReader->setInputEncoding('UTF-16LE');
$objPHPExcel = $objReader->load('file.csv');

目标是将 JSON 中的数据呈现为 .xls(或 .xlxs)文档,而不会在 Excel 上出现编码问题。

4

1 回答 1

3
$objReader->setInputEncoding('');

$objPHPExcel = $objReader->load('file.csv');

这对我来说效果很好。

于 2015-10-14T14:16:35.187 回答