보고서를 CSV 파일로 생성합니다. Excel에서 파일을 열려고하면 셀 내용을 기반으로 데이터 유형에 대한 가정을하고 그에 따라 형식을 다시 지정합니다.
예를 들어 CSV 파일에
...,005,...
그러면 Excel에서 5로 표시됩니다. 이것을 재정의하고 005를 표시하는 방법이 있습니까?
사용자가 CSV 파일을 두 번 클릭하여 열 수 있도록 파일 자체에 무언가를 수행하는 것을 선호합니다.
Excel 2003을 사용합니다.
보고서를 CSV 파일로 생성합니다. Excel에서 파일을 열려고하면 셀 내용을 기반으로 데이터 유형에 대한 가정을하고 그에 따라 형식을 다시 지정합니다.
예를 들어 CSV 파일에
...,005,...
그러면 Excel에서 5로 표시됩니다. 이것을 재정의하고 005를 표시하는 방법이 있습니까?
사용자가 CSV 파일을 두 번 클릭하여 열 수 있도록 파일 자체에 무언가를 수행하는 것을 선호합니다.
Excel 2003을 사용합니다.
답변:
.csv 파일을 열 때 Excel이 적용되는 서식을 제어하는 쉬운 방법은 없습니다. 그러나 다음은 도움이 될 수있는 세 가지 접근 방식입니다.
내 선호는 첫 번째 옵션입니다.
옵션 1 – 파일의 데이터 변경
다음과 같이 .csv 파일의 데이터를 변경할 수 있습니다. ..., =”005” , ... Excel에서 ..., 005 , ... 로 표시됩니다 .
Excel은 데이터를 수식으로 유지하지만 열을 복사하고 특수 값 붙여 넣기를 사용하면 수식이 제거되지만 서식은 유지됩니다.
옵션 2 – 데이터 서식 지정
단순히 형식 문제이고 해당 열의 모든 데이터 길이가 3 자리 인 경우. 그런 다음 Excel에서 데이터를 연 다음이 사용자 지정 형식 000 으로 데이터가 포함 된 열의 서식을 지정합니다.
옵션 3 – 파일 확장자를 .dif (데이터 교환 형식)로 변경
파일 확장자를 변경하고 파일 가져 오기 마법사를 사용하여 형식을 제어하십시오. 확장자가 .dif 인 파일은 두 번 클릭하면 Excel에서 자동으로 열립니다.
단계별 :
CSV를 사용하지 말고 SYLK를 사용하십시오.
http://en.wikipedia.org/wiki/SYmbolic_LinK_(SYLK)
서식을 훨씬 더 많이 제어 할 수 있으며 Excel은 내용을 검사하여 필드 유형을 추측하지 않습니다. 약간 복잡해 보이지만 아주 작은 하위 집합을 사용하여 벗어날 수 있습니다.
이것은 Microsoft Office 2010, Excel 버전 14에서 작동합니다.
"파일 자체에 뭔가를하는 것"이라는 OP의 선호도를 잘못 읽었습니다. 가져 오기를 직접 형식화하는 솔루션을 원하는 사람들을 위해 여전히 이것을 유지하고 있습니다.
사실 저는 최소한 Office 2003부터는 Excel 스프레드 시트를 XML 파일로 저장할 수 있다는 것을 발견했습니다. 따라서 XML 파일을 생성 할 수 있으며 두 번 클릭하면 Excel에서 열립니다. SYLK와 동일한 수준의 제어를 제공하지만 XML 구문이 더 직관적입니다.
셀에 끊기지 않는 공백을 추가하면 도움이 될 수 있습니다. 예를 들면 :
"firstvalue";"secondvalue";"005 ";"othervalue"
Excel에서 텍스트로 처리하고 공백이 표시되지 않도록합니다. Windows에서는 alt + 0160을 입력하여 중단없는 공백을 추가 할 수 있습니다. 자세한 정보는 여기를 참조하십시오. http://en.wikipedia.org/wiki/Non-breaking_space
Excel 2010에서 시도했습니다.이 문제에 대한 적절한 솔루션을 찾는 사람들에게 도움이되기를 바랍니다.
C # 코드에서 CSV 데이터를 내보낼 때이 문제가 발생했으며 선행 0 데이터 앞에 탭 문자 \ t를 추가하여이 문제를 해결 했으므로 데이터가 Excel에서 숫자가 아닌 텍스트로 해석되었습니다 (다른 문자 앞에 추가하는 것과 달리 볼 수 없습니다).
= "001"접근 방식을 좋아했지만 가져 오기 CSV 파일에서이 형식을 모두 제거하지 않고 내 보낸 CSV 데이터를 내 C # 응용 프로그램으로 다시 가져올 수 없습니다 (대신 가져 오기 데이터를 다듬을 것임). .
csv를 oleDB에로드하고 모든 추론 된 데이터 유형을 문자열로 강제
나는 같은 질문을 한 다음 코드로 대답했습니다.
기본적으로 csv 파일이로드되면 oledb 드라이버가 가정을하고 어떤 가정을해야하는지 알 수 있습니다.
내 코드는 모든 데이터 유형을 문자열로 강제합니다 ... 스키마를 변경하기가 매우 쉽습니다. 내 목적을 위해 xslt를 사용하여 원하는 방식으로 ti를 얻었지만 다양한 파일을 구문 분석하고 있습니다.
CSV 문서의 숫자 앞에 '를 추가하기 만하면됩니다.
이것은 하루 종일 나를 미치게 만들었고 (실제로 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은 숫자처럼 보이더라도 텍스트로 처리합니다.
...,`005,...
편집 : 이것은 잘못되었습니다. 아포스트로피 트릭은 데이터를 Excel에 직접 입력 할 때만 작동합니다. CSV 파일에서 사용하면 원하지 않는 아포스트로피가 필드에 나타납니다.