Excel CSV와 표준 CSV의 진정한 차이점


16

Excel CSV와 표준 CSV의 진정한 차이점은 무엇입니까?

예를 들어, 한 셀 내에서 줄 바꿈이있는 열을 처리 할 때 어떻게 다르게 인코딩합니까?

답변:


19

"표준"CSV로 정의한 내용에 따라 달라집니다. 내가 아는 한 Excel은 RFC 4180에 설명 된 규칙 , "CSV 파일의 공통 형식 및 MIME 형식"을 따릅니다 .

첫 번째 행의 첫 번째 셀에 두 개의 줄 바꿈이있는 테이블을 고려하십시오. Excel에서는 다음과 같습니다.

+---+---------------+------------+------------+
|   | A             | B          | C          |
+---+---------------+------------+------------+
| 1 | col1, line1a  |            |            |
|   | col1, line1b  |            |            |
|   | col1, line1c  | col2, row1 | col3, row1 |
| 2 | col1, row2    | col2, row2 | col3, row2 |
+---+---------------+------------+------------+

이제 Excel에서 어떻게 이것을 내 보냅니 까? 보자 – 텍스트 편집기는 이것을 표시 할 것이다 :

"col1, line1a
col1, line1b
col1, line1c","col2, row1","col3, row1"
"col1, row2","col2, row2","col3, row2"

매우 정교하지 않습니다. 0D셀에서 줄 바꿈이 발생한 곳에 캐리지 리턴 (hex )을 삽입합니다 . 모든 셀은 큰 따옴표로 묶습니다. 또한 실제 행은 캐리지 리턴으로 구분됩니다.

이를 올바르게 구문 분석하려면 CSV 파서가

  • 큰 따옴표 (예 : 셀) 안에 표시되면 캐리지 리턴을 무시하십시오.
  • 큰 따옴표 밖에 나타날 때 캐리지 리턴을 무시 하지 마십시오.

그렇게하지 않으면 다음과 같은 문제가 생길 수 있습니다 . 줄 바꿈을 무시하지 못했기 때문에 이제 두 대신 줄이 있습니다.

+---+---------------+------------+------------+
|   | A             | B          | C          |
+---+---------------+------------+------------+
| 1 | "col1, line1a |            |            |
| 2 | col1, line1b  |            |            |
| 3 | col1, line1c" | col2, row1 | col3, row1 |
| 4 | col1, row2    | col2, row2 | col3, row2 |
+---+---------------+------------+------------+

그러나 RFC가 말한 것을 보자, 아마도 Excel이 올바르게 했습니까?

줄 바꿈 (CRLF), 큰 따옴표 및 쉼표가 포함 된 필드는 큰 따옴표로 묶어야합니다.

깔끔합니다. 바로 Excel이하는 일입니다. 요약하자면 Excel은 "표준"CSV 파일의 권장 사항을 따르는 것 같습니다. 적절한 CSV 파서가 제공되면 Excel CSV 파일도 읽을 수 있어야합니다.


@ shhck : 왜 "csv"와 "excel"csv를 분리하는 csv 파서 구현이 보입니까? 또한 Excel이 매우 견고한 구현이라는 것을 알았습니다.
user157195

@ user157195 파서에 따라 Excel과 비 Excel 입력간에 차이점이있는 이유를 설명서에서 읽어야합니다. 왜 하나 있어야하는지 모르겠습니다. 나는 R 에서만 이것을 알고 있으며 , 이는 Excel CSV를 다른 모든 것처럼 취급합니다. 그러나 XLS도 읽을 수 있습니다.
slhck 2016 년

2
프로그래밍 방식으로 몇 년 동안 모든 모양과 크기의 Excel에서 생성 한 CSV 파일을 읽은 사람은 slhck가 100 % 정확하다는 것을 증명할 수 있습니다. Excel은 100 % "표준"CSV 파일을 생성합니다. 매번.
Mark Henderson

@Farseeker 확인 감사합니다! ( 지금 당신은 1337 담당자입니다!)
slhck

5
주의! ','를 소수점으로 사용하는 국가에서 Excel은 "매우 영리합니다"및 ';' 구분 문자. 이것은 Zee Germanz가 너무 많은 "quotes"; "in"; "their"; "files"를 보지 못하게합니다. 안타깝게도 영국 사무소로 보내면 AllSmooshedUpIntoASingleCellOnEveryLine을받습니다. 훌륭한.
Luke Usherwood

-1

원래 CSV 구현에서 나는 모든 텍스트 필드가 따옴표로 묶여 있고 숫자가 필요하지 않다는 것을 이해했습니다. Excel에서는이 작업을 수행하지 않으며 Microsoft에서 생성하지 않은 플랫폼에서 Excel로 생성 된 CSV 파일을 업로드하려고하면 실패합니다. 이는 표준 Microsoft 접근 방식이며 상호 운용성을 무시하고 맹목적으로 규칙을 따르는 데 중점을 둡니다. IE에서도 비슷한 일이 발생했으며 패딩 및 여백 속성에 대해 html / css 규칙을 올바르게 따르고 기존의 모든 웹 페이지와 웹 브라우저가 다르게 처리한다는 사실을 무시했습니다. 결과적으로 거의 모든 웹 페이지에는 이제 IE에 대한 특별한 규칙이 있습니다. Excel에서 쓸모없는 csv 파일을 찾은 다음 "연결"기능 열을 사용하여 수동으로 직접 만듭니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.