2010-08-02 5 views
0

나는이 올바른지, PHP는 fputcsv 기능에보고되었으며, 파일을 마이크로 소프트 엑셀에서 작동하지 않습니다이 방법을 사용하여 만든 몇 가지 의견을 들었습니다? PHP 이후PHP csv 함수, Microsoft는 안전합니까?

php.net에

코멘트는 라인 엔딩를 n 대신 \ 연구 \ n의 \ 항상 을 있다는 의미가 있습니다, 일반적으로 * nix에서 스크립트가 기반이다. 그러나 특정 Microsoft 프로그램 (나는 당신을 찾고 있어요, 액세스 97), 각 라인은 \ r에 \ n을로 끝나는 제대로 하지 않는 한 CSV를 인식 을 실패합니다. 여기에 설명 된대로 둘째, CSV 파일의 첫 번째 열 머리글/값이 대문자 ID, 특정 Microsoft 프로그램 (에헴 2007 엑셀)로 시작 경우, 오히려 CSV보다 SYLK 형식에있는 로 파일을 해석합니다 : http://support.microsoft.com/kb/323626

그래서

내가

0, 0278221234, 60143512345, 5pt 코드의 형식으로 데이터를 출력에 계획하고있는 경우, 예
1, 0278221234, 60143512345, 5pt 코드 예
2, 0278221234, 60143512345, 5pt 코드 예
3, 0278221234, 60143512345, 5pt 코드도

차이가 무엇 이 기능

을 사용하여 파일을 작성하고 간단하게 위의 라인의 작성 및 \ r에 \ n을로 종료 사이?

답변

1

이 방법으로 만든 파일은 Microsoft Excel에서 작동하지 않습니다. 맞습니까?

이 부분적으로 정확한. MS Excel은 사용자가 가져 오기 마법사를 사용할 때 파일을 잘 읽을 수 있습니다. 그러나 사용자는 파일을 어떻게 작성했는지, 즉 가져 오기 마법사를 사용하지 않고도 알 수 없어도 파일이 작동되기를 원할 것입니다.

이 파일이 자동으로 작동하게하려면, 사용; (세미콜론)을 레코드 구분자로 사용합니다. 예 :

$data = array("one", "two", "three"); 
$fh = fopen('test.csv', 'w'); 
fputcsv($fh, $data, ";"); 
fclose($fh); 

는 또한 CSV에 UTF-8을 쓰기 위해 당신이 파일의 시작 부분에 UTF-8 BOM을 추가해야합니다 있습니다.

+0

환호성, 쉼표와 비교했을 때 semi do를 사용하는 이유는 무엇입니까? 또한 0-9 a-z 만 사용하는 경우 UTF-8이 필요하지 않습니다. – Hailwood

+0

@Hailwood : UTF-8은 0-128 범위 (다른 것들 중에서 -z, A-Z, 0-9 및 기본 구두점 포함)의 ASCII와 동일하며 BOM은 반드시 필요하지 않습니다. – Piskvor

+0

Hailwood, 세미콜론은 일부 지역 설정 (예 : 네덜란드어)에서 사용되는 구분 문자입니다. 원하는 경우 Windows의 지역 설정에서이를 변경할 수 있습니다. – Rob

0

당신이 엑셀에 문제가있는 경우, 당신은 항상 대체 할 수 \ n \ 연구 \와 N 파일이 생성되면. 그것은 4 줄 이상의 코드와 같습니다.

[편집]

그냥 2007 년 잘 엽니 다 Excel을 테스트했다.