У меня есть Json, расшифровать его, записать его в CSV-файл с PHP, преобразовать CSV в .xls с помощью PHPExcelКодирование правильно CSV файлов для PHPExcel
Цель состоит в том, чтобы экспортировать из JSON в файл excel правильно. У меня возникли проблемы с кодированием и в основном с Excel для Mac 2011, который не поддерживает файлы CSV UTF-8: link Если я просмотрю его (пробел) на моем 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 from here:
$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, чтобы увидеть, если это будет нормально с первенствует. я iconv
перед тем fputcsv
и первенствовать показали китайские слова ...
Теперь я хочу, чтобы зашифровать файл CSV в UTF-16LE и загрузить его хорошо PHPExcel. Я использовал следующие строки и не работал. Вероятно, потому что CSV, который я создал с incov
, был частично (?) UTF-8 и UTF-16LE.
$objReader->setInputEncoding('UTF-16LE');
$objPHPExcel = $objReader->load('file.csv');
Цель состоит в том, чтобы сделать данные из JSON в .xls (или .xlxs) документ без проблем, кодирующих на Excel.
Вы правы в том, что микширование кодировок вызовет проблемы: CSV Reader всегда будет выполнять попытку конвертировать из входной кодировки в UTF-8, прежде чем вводить значение в объект ячейки PHPExcel ..., если значением CSV является UTF- 16LE, тогда это должно работать корректно, но преобразование значения UTF-8 в UTF-8, как если бы это был UTF16-LE, вызовет проблемы ... файл csv должен быть внутренне согласован в нем. Sencoding –
@MarkBaker Спасибо за комментарий и благодарность за ваше обязательство на PHPExcel. Я не уверен, но я думаю, что есть некоторые проблемы со специальным символом вроде: или ♑ (читается на сафари/не в хроме). Когда excel обнаруживает эти символы, он ломается и нуждается в ремонте, в то время как данные теряются. Теоретически «Apple Color Emoji» не должно быть проблемой, так как они читаются в формате unicode или UTF-8. Я ищу больше сейчас – Diolor
@MarkBaker Да. Мне пришлось санировать струны из эможи. Я добавил эту функцию: http://stackoverflow.com/a/12824140/1447885 – Diolor