Excel CSV-숫자 셀 형식


86

보고서를 CSV 파일로 생성합니다. Excel에서 파일을 열려고하면 셀 내용을 기반으로 데이터 유형에 대한 가정을하고 그에 따라 형식을 다시 지정합니다.

예를 들어 CSV 파일에

...,005,...

그러면 Excel에서 5로 표시됩니다. 이것을 재정의하고 005를 표시하는 방법이 있습니까?

사용자가 CSV 파일을 두 번 클릭하여 열 수 있도록 파일 자체에 무언가를 수행하는 것을 선호합니다.

Excel 2003을 사용합니다.


이 문제 에 대한 매크로 솔루션 은 이 질문 을 참조하십시오 .
아담 젠슨

요즘에는 Excel 작성 라이브러리가 많이 있습니다. 선택한 언어로 .xlsx 파일을 만드는 것은 매우 쉽습니다. 사용자가 어떤 이유로 여전히 Excel 2003을 사용하고있는 경우 (이 질문을 처음에 받았을 때는 일반적이지만 현재로서는 그럴 가능성이 거의 없음) .xls 생성 옵션도 있습니다. 오늘날이 질문에 걸림돌이되는 사람들에게는 스스로 굴릴 필요가 없을 것입니다.
John Y

답변:


129

.csv 파일을 열 때 Excel이 적용되는 서식을 제어하는 ​​쉬운 방법은 없습니다. 그러나 다음은 도움이 될 수있는 세 가지 접근 방식입니다.

내 선호는 첫 번째 옵션입니다.

옵션 1 – 파일의 데이터 변경

다음과 같이 .csv 파일의 데이터를 변경할 수 있습니다. ..., =”005” , ... Excel에서 ..., 005 , ... 로 표시됩니다 .

Excel은 데이터를 수식으로 유지하지만 열을 복사하고 특수 값 붙여 넣기를 사용하면 수식이 제거되지만 서식은 유지됩니다.

옵션 2 – 데이터 서식 지정

단순히 형식 문제이고 해당 열의 모든 데이터 길이가 3 자리 인 경우. 그런 다음 Excel에서 데이터를 연 다음이 사용자 지정 형식 000 으로 데이터가 포함 된 열의 서식을 지정합니다.

옵션 3 – 파일 확장자를 .dif (데이터 교환 형식)로 변경

파일 확장자를 변경하고 파일 가져 오기 마법사를 사용하여 형식을 제어하십시오. 확장자가 .dif 인 파일은 두 번 클릭하면 Excel에서 자동으로 열립니다.

단계별 :

  • 파일 확장자를 .csv 에서 .dif로 변경합니다.
  • 파일을 두 번 클릭하여 Excel에서 엽니 다.
  • '파일 가져 오기 마법사'가 시작됩니다.
  • '파일 형식'을 '구분'으로 설정하고 '다음'버튼을 클릭합니다.
  • 구분자 아래에서 '쉼표'를 선택하고 '다음'버튼을 클릭합니다.
  • 표시되는 데이터의 각 열을 클릭하고 '열 데이터 형식'을 선택하십시오. 값이 '005'인 열은 '텍스트'형식이어야합니다.
  • 완료 버튼을 클릭하면 지정한 형식으로 Excel에서 파일이 열립니다.

8
.dif가 내 컴퓨터에서 작동하지 않았습니다. Excel 2007로 수동으로 여는 것이 작동하지 않았고 (파일 형식이 확장명과 다르다고 경고 했음) .DIF가 많은 컴퓨터에서 Quicktime과 연결된 것처럼 보입니다. 참고로 :) 그렇지 않으면 훌륭한 팁!
Nicholas

15
"그냥 작동하는"파일을 생성하는 번거롭지 않은 방법을 원한다면 옵션 1이 최선이라고 생각합니다. 즉, 사용자의 컴퓨터에서 추가 작업을 수행 할 필요없이 Excel에서 열립니다.
Kip

나는 같은 문제가 있으며 위의 어느 것도 적절하지 않습니다. 죄송합니다. XML로 내보내고 XSLT를 사용하여 CSV로 이동할 수 있다고 생각합니다. CSV 파일이 정확해야 다른 응용 프로그램으로 가져올 수 있습니다
Matt

1
옵션 1이 항상 좋은 것은 아닙니다. "1E02, 어떤 텍스트"라고 말한 셀이 있고 앞에 등호를 입력하면 Excel에서 수식을 입력 한 것으로 간주합니다. 먼저 수식이 잘못되지만 두 번째로 가장 중요한 것은 텍스트를 2 개의 셀로 분할합니다.
ghiscoding

1
옵션 1에 감사드립니다. 추가 작업없이 과학 표기법 문제를 수정했습니다.
NaN

28

CSV를 사용하지 말고 SYLK를 사용하십시오.
http://en.wikipedia.org/wiki/SYmbolic_LinK_(SYLK)

서식을 훨씬 더 많이 제어 할 수 있으며 Excel은 내용을 검사하여 필드 유형을 추측하지 않습니다. 약간 복잡해 보이지만 아주 작은 하위 집합을 사용하여 벗어날 수 있습니다.


2
+1 SYLK에 쓰기는 구현하기 간단하며 초보자로서 수행했습니다.
Matt H

1
이 형식에 대해 몰랐습니다. 제가 사용할 수있는 것 같습니다. 이것에 대한 +1!
Buggabill 2011

+1 CSV에서 SYLK로 전환하는 데 5 분이 걸렸습니다. 이제부터 내 goto 출력 형식!
TheFish

@xamde, 당신 말이 맞아요. RTF에서와 같이 지원하기 위해 형식을 확장하지 않은 것이 이상합니다.
Mark Ransom 2012 년

WTF, 또는 누구에게 추천하겠습니까? Wikipedia에서 인용합니다. "Microsoft는 SYLK 사양을 게시하지 않습니다."
sorin nov.

14

이것은 Microsoft Office 2010, Excel 버전 14에서 작동합니다.

"파일 자체에 뭔가를하는 것"이라는 OP의 선호도를 잘못 읽었습니다. 가져 오기를 직접 형식화하는 솔루션을 원하는 사람들을 위해 여전히 이것을 유지하고 있습니다.

  1. 빈 (새) 파일 열기 (파일-> 통합 문서에서 새로 만들기)
  2. 가져 오기 마법사 열기 (데이터-> 텍스트에서)
  3. .csv 파일을 선택하고 가져 오기
  4. 대화 상자에서 '구분'을 선택하고 다음을 클릭합니다.
  5. 구분 기호를 선택하고 ( '쉼표'를 제외한 모든 항목 선택 취소) 텍스트 한정자를 선택한 후 (예 : {None}) 다음을 클릭합니다.
  6. 에서 데이터 미리보기 필드 텍스트로 원하는 열을 선택합니다. 강조되어야합니다.
  7. 에서 열 데이터 형식의 필드, '텍스트'를 선택합니다.
  8. 완료를 클릭하십시오.


2

범위를 텍스트로 간단히 포맷 할 수 있습니다.

또한 여기 에 숫자 형식과이를 프로그래밍하는 방법에 대한 멋진 기사가 있습니다.


이는 값이 표시되는 방식에만 영향을줍니다. 수식을 사용하거나 가져 오는 동안 텍스트로 변환해야합니다.이 스레드에 포함 된 여러 메서드 중 하나를 사용합니다
leo

2

사실 저는 최소한 Office 2003부터는 Excel 스프레드 시트를 XML 파일로 저장할 수 있다는 것을 발견했습니다. 따라서 XML 파일을 생성 할 수 있으며 두 번 클릭하면 Excel에서 열립니다. SYLK와 동일한 수준의 제어를 제공하지만 XML 구문이 더 직관적입니다.


2

셀에 끊기지 않는 공백을 추가하면 도움이 될 수 있습니다. 예를 들면 : "firstvalue";"secondvalue";"005 ";"othervalue"

Excel에서 텍스트로 처리하고 공백이 표시되지 않도록합니다. Windows에서는 alt + 0160을 입력하여 중단없는 공백을 추가 할 수 있습니다. 자세한 정보는 여기를 참조하십시오. http://en.wikipedia.org/wiki/Non-breaking_space

Excel 2010에서 시도했습니다.이 문제에 대한 적절한 솔루션을 찾는 사람들에게 도움이되기를 바랍니다.


2

C # 코드에서 CSV 데이터를 내보낼 때이 문제가 발생했으며 선행 0 데이터 앞에 탭 문자 \ t를 추가하여이 문제를 해결 했으므로 데이터가 Excel에서 숫자가 아닌 텍스트로 해석되었습니다 (다른 문자 앞에 추가하는 것과 달리 볼 수 없습니다).

= "001"접근 방식을 좋아했지만 가져 오기 CSV 파일에서이 형식을 모두 제거하지 않고 내 보낸 CSV 데이터를 내 C # 응용 프로그램으로 다시 가져올 수 없습니다 (대신 가져 오기 데이터를 다듬을 것임). .


1

파일을 가져올 때 열 유형을 선택할 수 있다고 생각합니다. 숫자 대신 텍스트로 만드십시오. 나는 지금 확인 할 사본이 내 앞에 없습니다.


1

csv를 oleDB에로드하고 모든 추론 된 데이터 유형을 문자열로 강제

나는 같은 질문을 한 다음 코드로 대답했습니다.

기본적으로 csv 파일이로드되면 oledb 드라이버가 가정을하고 어떤 가정을해야하는지 알 수 있습니다.

내 코드는 모든 데이터 유형을 문자열로 강제합니다 ... 스키마를 변경하기가 매우 쉽습니다. 내 목적을 위해 xslt를 사용하여 원하는 방식으로 ti를 얻었지만 다양한 파일을 구문 분석하고 있습니다.


1

나는 이것이 오래된 질문이라는 것을 알고 있지만 여기에 나열되지 않은 해결책이 있습니다.

csv를 생성 할 때 쉼표 뒤에 공백을 추가하지만 값 앞에는 예를 들어 , 005,.

이것은 어쨌든 Excel 2007에서 자동 날짜 형식화를 방지하기 위해 작동했습니다.


2
방금 테스트했지만 Excel 2007 및 숫자 열에서 작동하지 않는 것 같습니다. :-/
Norman H

1

가져 오는 CSV 파일의 셀 내에 줄 바꿈이있는 경우 텍스트 가져 오기 마법사 방법이 작동하지 않습니다. 이 방법은이 시나리오를 처리합니다 (적어도 탭으로 구분 된 데이터로).

  1. 새 Excel 파일 만들기
  2. 모든 셀을 선택하려면 Ctrl + A
  3. 숫자 형식 콤보 상자에서 텍스트를 선택합니다.
  4. 텍스트 편집기에서 탭으로 구분 된 파일 열기
  5. 모두 선택, 복사하여 Excel에 붙여 넣기


1

이것은 하루 종일 나를 미치게 만들었고 (실제로 CSV 파일을 열기 전에 Excel 열 유형을 제어 할 수 없기 때문에) VB.NET 및 Excel Interop을 사용하여 저에게 효과적이었습니다.

        'Convert .csv file to .txt file.
        FileName = ConvertToText(FileName)

        Dim ColumnTypes(,) As Integer = New Integer(,) {{1, xlTextFormat}, _
                                                        {2, xlTextFormat}, _
                                                        {3, xlGeneralFormat}, _
                                                        {4, xlGeneralFormat}, _
                                                        {5, xlGeneralFormat}, _
                                                        {6, xlGeneralFormat}}

        'We are using OpenText() in order to specify the column types.
        mxlApp.Workbooks.OpenText(FileName, , , Excel.XlTextParsingType.xlDelimited, , , True, , True, , , , ColumnTypes)
        mxlWorkBook = mxlApp.ActiveWorkbook
        mxlWorkSheet = CType(mxlApp.ActiveSheet, Excel.Worksheet)


Private Function ConvertToText(ByVal FileName As String) As String
    'Convert the .csv file to a .txt file.
    'If the file is a text file, we can specify the column types.
    'Otherwise, the Codes are first converted to numbers, which loses trailing zeros.

    Try
        Dim MyReader As New StreamReader(FileName)
        Dim NewFileName As String = FileName.Replace(".CSV", ".TXT")
        Dim MyWriter As New StreamWriter(NewFileName, False)
        Dim strLine As String

        Do While Not MyReader.EndOfStream
            strLine = MyReader.ReadLine
            MyWriter.WriteLine(strLine)
        Loop

        MyReader.Close()
        MyReader.Dispose()
        MyWriter.Close()
        MyWriter.Dispose()

        Return NewFileName
    Catch ex As Exception
        MsgBox(ex.Message)
        Return ""
    End Try

End Function

0

CSV를 열면 텍스트 가져 오기 마법사가 나타납니다. 마법사의 마지막 단계에서 특정 열을 텍스트로 가져 와서 '00'접두사를 유지할 수 있어야합니다. 그런 다음 원하는 방식으로 셀 서식을 지정할 수 있습니다.

Excel 2007을 사용해 보았는데 작동하는 것처럼 보였습니다.


1
Excel 2003은 마법사를 표시하지 않습니다.
Sergey Stadnik

0

음, Excel은 CSV 파일에 대한 마법사를 표시하지 않습니다. .txt로 이름을 바꾸면 다음에 파일> Excel에서 열기를 수행 할 때 마법사가 표시됩니다.


0

필드 앞에 작은 따옴표를 넣으십시오. Excel은 숫자처럼 보이더라도 텍스트로 처리합니다.

...,`005,...

편집 : 이것은 잘못되었습니다. 아포스트로피 트릭은 데이터를 Excel에 직접 입력 할 때만 작동합니다. CSV 파일에서 사용하면 원하지 않는 아포스트로피가 필드에 나타납니다.

http://support.microsoft.com/kb/214233


4
이것은 사람들이 시도 할 가능성이있는 것입니다. 따라서 작동하지 않는다는 것을 아는 것은 유용하고 시간을 절약합니다.
AndyM 2013
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.