위해 내가 JSON은 PHPexcel인코딩 제대로 CSV 파일은 PHPexcel
목표는로 JSON에서 내보내는 것입니다의 도움으로 .XLS하는 CSV 변환, 그것을 디코딩 PHP로 CSV 파일에 쓰기가 엑셀 파일이 올바르게 출력됩니다. UTF-8 CSV 파일을 지원하지 않는 Mac 2011 용 Excel에서 주로 인코딩에 문제가 있습니다. link 내 Mac에서 미리 (스페이스 바)를 누르면 인코딩 된 것처럼 보입니다. 문제는 탁월합니다. CSV에 대한
우선 코드 :
$file_csv = fopen('files/file.csv', 'w');
다음 JSON : 지금은 내가 UTF-8에 문제가 엑셀로이 CSV를 가져 오는 경우
$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);
. 예를 들어 텍스트 편집기로 변환하면 Textmate를 UTF-16LE로 변환 한 다음 Excel로 가져 오기하면 모든 것이 부드럽게 처리됩니다.
$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에 깨진 및 열 때 수리가 필요합니다 :
그리고 PHPExcel 코드는 .XLS from here을 만들 수 있습니다.내 첫 번째 시도는 그 엑셀로 확인 될 것입니다 있는지 확인하기 위해 PHP에서 UTF-16LE로 위의 file.csv
를 변환하는 것이 었습니다. 나는 fputcsv
전에 iconv
을 사용하고 엑셀은
incov
으로 만든 .csv 파일은 부분적으로 (?) UTF-8 및 UTF-16LE 이었기 때문일 수 있습니다.
$objReader->setInputEncoding('UTF-16LE');
$objPHPExcel = $objReader->load('file.csv');
목표 엑셀 문제없이 부호화 .XLS (또는 .xlxs) 문서로 JSON에서 데이터를 렌더링하는 것이다.
인코딩을 믹싱하면 문제가 발생할 수 있습니다. CSV 판독기는 항상 값을 PHPExcel 셀 객체로 삽입하기 전에 입력 인코딩을 UTF-8로 변환하려고 시도합니다 ... CSV 값이 UTF- 16LE,이 올바르게 작동하지만 UTF-8 값을 UTF-8로 변환하면 UTF16-LE 것처럼 문제가 발생할 .... csv 파일을 내부적으로 일관성이 있어야합니다. –
@MarkBaker 주셔서 감사합니다 의견 및 PHPExcel에 대한 귀하의 헌신에 감사드립니다. 확실하지는 않지만 다음과 같은 특수 문자와 관련된 몇 가지 문제가 있다고 생각합니다. ♑ (사파리/크롬에서 읽을 수 없음) Excel에서 이러한 문자가 발견되면 데이터가 손실되는 동안 데이터가 손상되어 복구해야합니다. 이론적으로 "Apple Color Emoji"는 유니 코드 또는 UTF-8 읽기 쉽기 때문에 문제가되지 않아야합니다. 더 많은 것을 지금 찾고 있습니다 – Diolor
@ MarkBaker 예. 나는 이모 지에서 문자열을 위생해야했다. 이 함수를 추가했습니다. http://stackoverflow.com/a/12824140/1447885 – Diolor