Правильное кодирование CSV-файлов для PHPexcel

У меня есть Json, расшифруйте его, запишите его в файл CSV с PHP, конвертируйте CSV в.xls с помощью PHPexcel

Цель состоит в том, чтобы правильно экспортировать из JSON в файл Excel. У меня проблемы с кодировкой и, в основном, с Excel для Mac 2011, который не поддерживает файлы CSV UTF-8: ссылка Если я предварительно просматриваю его (пробел) на моем Mac, он выглядит хорошо закодированным. Беда в превосходстве.

Сначала код для 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);

Теперь, если я импортирую этот CSV с Excel, у меня будут проблемы с UTF-8. Если я преобразую его в текстовом редакторе, например Textmate, в UTF-16LE, а затем импортирую в Excel, все будет гладко.

И код PHPExcel для создания.xls отсюда:

$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 и при открытии требует ремонта.


Моей первой попыткой было преобразовать вышеупомянутое file.csv в UTF-16LE в PHP, чтобы увидеть, будет ли это хорошо с Excel. я использовал iconv до fputcsv и Excel показал китайские слова...

Теперь я хочу закодировать CSV-файл в UTF-16LE и загрузить его с помощью PHPExcel. Я использовал следующие строки и не работал. Вероятно, потому что.csv, который я создал с incov был частично (?) UTF-8 и UTF-16LE.

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

Цель состоит в том, чтобы преобразовать данные из JSON в документ.xls (или.xlxs) без проблем кодирования в Excel.

1 ответ

$objReader->setInputEncoding('');

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

это хорошо сработало для меня.

Другие вопросы по тегам