문제

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

예를 들어 CSV 파일에 다음이 포함된 경우

...,005,...

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

나는 사용자가 CSV 파일을 두 번 클릭하여 열 수 있도록 파일 자체에 어떤 작업을 수행하는 것을 선호합니다.

저는 엑셀 2003을 사용하고 있습니다.

도움이 되었습니까?

해결책

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

내가 선호하는 것은 첫 번째 옵션입니다.

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

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

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

옵션 2 – 데이터 형식 지정

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

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

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

단계별:

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

다른 팁

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

서식을 훨씬 더 많이 제어 할 수 있으며 Excel은 내용을 검사하여 필드 유형을 추측하려고 시도하지 않습니다. 조금 복잡해 보이지만 아주 작은 서브 세트를 사용하여 도망 갈 수 있습니다.

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

나는 "파일 자체에 무언가를하기 위해 OP의 선호도를 잘못 읽었습니다. 나는 여전히 가져 오기를 직접 포맷 할 수있는 솔루션을 원하는 사람들을 위해 이것을 유지하고 있습니다.

  1. 빈 (새) 파일 열기 (파일 -> 통합 문서에서 새)
  2. 가져 오기 마법사를 엽니 다 (텍스트에서 데이터 ->)
  3. .CSV 파일을 선택하고 가져 오기
  4. 대화 상자에서 '구분'을 선택하고 다음을 클릭하십시오.
  5. 구분자를 선택하십시오 ( 'Comma'외에는 모든 것을 선택 취소), 텍스트 예선을 선택하고 다음을 클릭하십시오.
  6. 에서 데이터 미리보기 필드 텍스트가 될 열을 선택하십시오. 강조해야합니다.
  7. 에서 열 데이터 형식 필드, '텍스트'를 선택하십시오.
  8. 완료를 클릭하십시오.

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

또한 여기 숫자 형식과 프로그램을 프로그래밍 할 수있는 방법에 대한 좋은 기사입니다.

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

셀에 비분한 공간을 추가하면 도움이 될 수 있습니다. 예를 들어:"firstvalue";"secondvalue";"005 ";"othervalue"

그것은 그것을 텍스트로 취급하도록 탁월하고 공간이 보이지 않습니다. Windows에서는 Alt+0160을 기울여 비 분쇄 공간을 추가 할 수 있습니다. 자세한 내용은 여기를 참조하십시오. http://en.wikipedia.org/wiki/non-breaking_space

Excel 2010에서 시도해 보았습니다. 이것이 여전히이 문제에 대해 매우 적절한 솔루션을 검색하는 사람들에게 도움이 될 수 있기를 바랍니다.

C# 코드에서 CSV 데이터를 내보낼 때이 문제를 겪었고 탭 문자 t로 선행 제로 데이터를 선물 하여이 문제를 해결 했으므로 데이터는 Excel의 숫자가 아닌 텍스트로 해석되었습니다 (그러나 다른 문자를 선불하는 것과는 달리, IT는 그렇습니다. t를 볼 수 없다).

= "001"접근 방식이 마음에 들었지만 이로 인해 내보내기 CSV 데이터를 가져 오기 CSV 파일 에서이 형식을 모두 제거하지 않고 C# 응용 프로그램에 다시 인상 할 수 없습니다 (대신 가져 오기 데이터를 다듬겠습니다). .

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

CSV를 OLEDB에로드하고 추론 된 모든 데이터 타입을 문자열로 강제로합니다.

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

기본적으로 CSV 파일이로드되면 OLEDB 드라이버는 가정을합니다.

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

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

CSV를 생산할 때 쉼표 이후에 공간을 추가하지만 값보다 앞서 , 005,.

이것은 어쨌든 Excel 2007의 자동 날짜 서식을 방지하기 위해 효과가있었습니다.

가져 오는 CSV 파일이 셀 내에서 줄이 끊어지면 텍스트 가져 오기 마법사 메소드가 작동하지 않습니다. 이 메소드는이 시나리오를 처리합니다 (적어도 탭 구분 데이터와 함께) :

  1. 새 Excel 파일을 만듭니다
  2. ctrl+a 모든 세포를 선택합니다
  3. 숫자 형식의 Combobox에서 텍스트를 선택하십시오
  4. 텍스트 편집기에서 탭 열기 파일이 열립니다
  5. 모두를 선택하고 복사하여 엑셀에 붙여 넣습니다

이것은 하루 종일 나를 미치게 만들어 왔으며 (실제로 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

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

나는 Excel 2007과 함께 시도했고 그것은 작동하는 것처럼 보였다.

글쎄, Excel은 CSV 파일에 대한 마법사를 나타 내지 않습니다. .txt로 이름을 바꾸면 다음 번에 파일을 열면 마법사가 표시됩니다.

필드 전에 단일 견적을 넣으십시오. Excel은 숫자처럼 보이더라도 텍스트로 취급합니다.

...,`005,...

편집하다: 이것은 잘못되었습니다. Apostrophe Trick은 데이터를 Excel에 직접 입력 할 때만 작동합니다. CSV 파일로 사용하면 Apostrophe가 원하지 않는 현장에 나타납니다.

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

CSV 문서의 숫자 앞에 '추가하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top