Excel에서 값을 문자열로 해석하도록 쉼표로 구분 된 CSV 형식


64

Excel에서 값을 문자열로 해석하고 숫자 또는 날짜로 변환하지 않도록 CSV 파일을 출력하는 방법을 찾으려고 잠시 동안 검색했습니다.

예 :

"141", "10/11/2002", "350.00", "1311742251"

Excel은이 모든 것을 "지능적으로"기본 날짜 / 숫자 형식으로 변환하려고합니다. 그 주위에 방법이 있습니까?


편집 : 내 질문의 의도를 명확히했습니다. 혼란을 드려 죄송합니다.

답변:


67

소스 데이터를 제어하는 ​​사용자의 경우 CSV 열이 다음 형식이 아닌 경우 Excel은 CSV 필드의 형식을 자동 감지합니다.

"=""Data Here"""

예를 들어 ...

20,       5.5%,      "0404 123 351", "3-6",  "=""123"""
[number]  [percent]  [number]        [date]  [string]  <-- how Excel interprets

Google 스프레드 시트에서도 작동하지만 다른 스프레드 시트 앱이이 표기법을 지원하는지 확실하지 않습니다.

데이터에 따옴표 자체가 포함되어 있다고 의심되면 다음 과 같이 따옴표를 이중 이스케이프 해야합니다 ...

"=""She said """"Hello"""" to him"""



(편집 : DMA57361 덕분에 수정 사항으로 업데이트되었습니다!)


굉장, 우리는 단지 데이터를 변경해야합니다. sigh
Pricey

4
마지막 열은 "=""123"""그렇지 않으면 잘못 형성 되어야합니다 . 를 포함하는 필드 "는 구분되어야 "하고 필드 의 s는 다른 "s로 이스케이프 되어야합니다 .
DMA57361

@ DMA57361 실제로 그가 가진 방식은 괜찮습니다. 앞에 붙은 등호가없는 다른 두 필드입니다. 그는 거기에 셀의 수식을 설정하여 문자열을 반환합니다. 이를 피하기 위해 셀의 데이터 유형을 "텍스트"로 설정할 수 있습니다.
획기적인

2
이 테이블을 통해 Excel 필드가 아닌 CSV 파일을 나타냅니다 . 마지막 값 ="123"은 필드 " 올바르게 구분 하지 않고 필드 구분 문자 포함하므로 유효한 CSV 필드가 아닙니다 . Excel이 수식으로 읽는다는 사실은 전적으로 Excel에 달려 있으며 CSV 파일과 관련이 없습니다.
DMA57361

2
@PriceChild, 원래 질문의 요점 (실제로 잘 설명하지 못함)은 실제로 사용자가 가능한 한 쉽게 CSV를 형식화하는 방법이었습니다 . 그리고 이것이 제가 스스로 발견하고 게시하고 싶었던 답변입니다. DMA57361도 실제로 유용한 수정 사항을 가져 왔습니다. 감사합니다!
Simon East

36

많은 사람들과 마찬가지로 Microsoft가 다양한 제안 된 솔루션을 만들고 시도한 것과 동일한 결정으로 어려움을 겪고 있습니다.

Excel 2007의 경우 다음이 진행됩니다.

  • 모든 값을 큰 따옴표로 묶는 것은 도움이되지 않습니다
  • double quutes에 넣은 후 모든 값 앞에 = 를 넣으면 도움이되지만 csv 파일은 대부분의 다른 응용 프로그램에 쓸모가 없습니다.
  • 모든 값 주위에 큰 따옴표를 괄호로 묶는 것은 쓰레기입니다.
  • 큰 따옴표를 묶기 전에 모든 값 앞에 공백을 넣으면 날짜로 변환하지 못하지만 선행 또는 후행 0의 트리밍을 막지는 않습니다.
  • 값 앞에 작은 따옴표를 넣으면 Excel 내에서 데이터를 입력 할 때만 작동합니다.

하나:

큰 따옴표를 묶기 전에 탭을 모든 값 앞에두면 DOES는 날짜로 변환되지 않으며 DOES는 선행 또는 후행 0이 트리밍되는 것을 방지하고 시트는 각 셀의 왼쪽 상단 모서리에 불쾌한 경고 마커를 표시하지 않습니다.

예 :

"<tab character><some value>","<tab character><some other value>"

탭 문자는 큰 따옴표 안에 있어야합니다. 편집 : 큰 따옴표는 필요하지 않습니다.

csv 파일을 두 번 클릭하면 Excel에서 스프레드 시트로 파일을 열어 텍스트 데이터처럼 위와 같이 처리 된 모든 값을 표시 할 수 있습니다. '.' 을 사용하도록 Excel을 설정하십시오 . csv 파일의 모든 줄이나 ','가 아닌 소수점 으로 각 행의 첫 번째 셀에 하나의 텍스트로 표시됩니다. Microsoft는 CSV가 "소수가 아닌"구분 된 값을 의미한다고 생각합니다.


이 탭 트릭은 하루를 절약했으며 Excel은 실제로 긴 숫자 값을 숫자로 변환했으며 15 일 후에 모든 숫자를 잃어 버렸습니다. 탭 접두사가있는 텍스트로 Excel에서 처리하도록 Excel을 관리합니다. 따라서 날짜뿐만 아니라 숫자에도 적용됩니다.
Markus Yrjölä

정말 유용합니다. 감사합니다!
Flavio

22

Excel의 가져 오기 기능을 사용하면 각 열을 해석해야하는 형식 (자동, 텍스트 또는 날짜)을 지정할 수 있으며 데이터 파일을 수정할 필요가 없습니다.

Excel 2007/2010에서 DataGet External Data→ 로 찾을 수 있습니다 From Text.
또는 Excel 2003의 경우 DataImport External DataImport Data

다음은 주어진 예제 데이터에 대한 Excel 2003 텍스트 가져 오기 마법사의 이미지로, 후자의 두 열을 텍스트로 가져 오는 것을 보여줍니다.

Excel 2003 : 3 단계의 텍스트 가져 오기 마법사-데이터 형식


모든 세부 사항에 감사드립니다. 내 질문에서 언급하지 않은 것은 Excel로 데이터를 내보내는 스크립트를 작성한다는 것이므로 사용자가 이와 같은 혼란스러운 옵션을 뛰어 넘지 못하게하려고했습니다. 그러나 어쨌든 당신을 투표했습니다. :-)
Simon East

@Simon, 스크립트 작성은 무엇입니까? 중간 형식을 거치지 않고 실제 Excel 파일을 직접 만들 수있는 방법은 무엇입니까?
DMA57361

데이터베이스 테이블을 내보내는 PHP 스크립트입니다. CSV는 아마도 가장 쉽게 작업 할 수는 있지만 정확합니다. 일부 오픈 소스 코드를 사용하여 XLS를 생성하거나 과거 경험에서 얻은 HTML 테이블조차 Excel에서 합리적인 결과를 얻을 수 있다고 생각합니다 (허용 색상 및 서식 등이 있지만 데이터 유형에 대해서는 확실하지 않습니다.
Simon East

1
PHP → Excel에 대해 SO에 대한 몇 가지 질문 이 있습니다 . 처음 시도한 몇 가지 모두 PHP Excel을 가리키는 답변을 가지고 있으므로 살펴볼 가치가 있습니다.
DMA57361

그게 매우 도움이 적지 ansers 읽은 후
greg121을

1

Simon의 예는 저에게 효과적이지 않았으며 언어 차이라고 생각합니다. C #에서 내 작업 형식 문자열은 다음과 같습니다.

var linebreak = (i++ == list.Count) ? "" : "\r\n";

csv += String.Format("=\"{0}\",{1},{2},{3},=\"{4}\"{5}",
    item.Value, item.Status, item.NewStatus, item.Carrier, c.Status, linebreak);

출력 파일은 다음과 같습니다.

="abababababab",INVALID,INVALID,USPS,="",
="9500100030492359000149",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9500100030492359000149",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9500100030492359000149",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9500100030492359000149",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9400110200793482982812",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9400110200793482982812",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9400110200793000216184",UNKNOWNSTATUS,INVALID,USPS,=""

알 수 있듯이 출력 파일의 형식 은 Visual Basic 규칙 이 ="VALUE",아닐 "=""VALUE""",수도 있습니다.

Excel 2010을 사용하고 있습니다. 또한 Google 스프레드 시트는 이러한 방식으로 포맷 된 파일을 열거 나 변환하지 않습니다. 등호를 제거하면 작동합니다. "VALUE",Excel은 여전히 ​​파일을 열지 만 열을 문자열로 만들고 싶다는 사실은 무시합니다.


-2

Excel에서 날짜를 텍스트로 해석하도록하는 간단한 방법은 다음과 같이 전체 따옴표를 사용하는 대신 날짜 앞에 작은 따옴표를 넣는 것입니다.

'10 / 11 / 2002

CSV를 열지 않고 가져올 수있는 경우 각 열의 형식을 Excel에 알릴 수 있습니다. 내가 물었던이 질문을 보라 .


5
Excel로 가져 오는 CSV 파일에서 작동하지 않기 때문에 다운 보트되었습니다. Excel은 따옴표를 리터럴 따옴표로 해석하여 셀에 표시합니다.
psynnott
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.