2010-05-27 2 views
3

나는 약간 혼란 스럽다. 내가 CSV에 시트를 내보낼 Excel 2003의 사용하면 실제로 세미콜론을 사용CSV가 실제로 .... 세미콜론으로 구분 된 값 ... (Excel에서 AZERTY로 내보내기)

... 이제

Col1;Col2;Col3 
shfdh;dfhdsfhd;fdhsdfh 
dgsgsd;hdfhd;hdsfhdfsh 

나는 마이크로 소프트 드라이버를 사용하여 CSV를 읽고는 쉼표의 예상과 큰 것과 목록을보고 열 ???

내가 AZERTY 키보드를 가지고 있기 때문에 Excel이 세미콜론으로 내보내지고 있다고 의심됩니다. 그러나 CSV 판독기는 다른 구분 기호도 고려해야합니까?

적절한 구분 기호를 알 수 있고/또는 csv를 제대로 읽을 수 있습니까 ??

public static DataSet ReadCsv(string fileName) 
    { 
     DataSet ds = new DataSet(); 
     string pathName = System.IO.Path.GetDirectoryName(fileName); 
     string file = System.IO.Path.GetFileName(fileName); 
     OleDbConnection excelConnection = new OleDbConnection 
     (@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathName + ";Extended Properties=Text;"); 
     try 
     { 
      OleDbCommand excelCommand = new OleDbCommand(@"SELECT * FROM " + file, excelConnection); 
      OleDbDataAdapter excelAdapter = new OleDbDataAdapter(excelCommand); 
      excelConnection.Open(); 
      excelAdapter.Fill(ds); 
     } 
     catch (Exception exc) 
     { 
      throw exc; 
     } 
     finally 
     { 
      if(excelConnection.State != ConnectionState.Closed) 
       excelConnection.Close(); 
     } 
     return ds; 
    } 

답변

9

한 가지 방법은 decent CSV library을 사용하는 것입니다. 구분 기호를 지정할 수있는 문자 :

using (var csvReader = new CsvReader("yourinputfile.csv")) 
{ 
    csvReader.ValueSeparator = ';'; 
    csvReader.ReadHeaderRecord(); 

    while (csvReader.HasMoreRecords) 
    { 
     var record = csvReader.ReadDataRecord(): 
     var col1 = record["Col1"]; 
     var col2 = record["Col2"]; 
    } 
} 
+1

이것은 훌륭한 라이브러리처럼 보입니다 ... 상용 응용 프로그램에서 이것을 사용할 수 있습니까? 라이센스에서 제외 할 수 없습니다 ... 또한 "About"창에서 속성이 필요합니까? 그게 무엇이되어야합니까? 답변을 보내 주시고 도서관을 공유해 주셔서 감사합니다. –

+1

절대적으로 - 면허는 그들이 허용하는만큼 관대합니다. 신용에 대한 필요가 없습니다 - 당신의 upvote 여기에 충분하다 :)하지만 당신이 정말로 그것을 좋아한다면, codeplex 사이트에 대한 리뷰는 많이 감사 할 것입니다. –

+0

불행히도 우리는 .NET 2.0을 목표로하고 있으며 KBCsv lib에 대한 참조를 추가 할 수 없습니다. 우리는 소스 코드 프로젝트를 열려고했지만 VS2003과 VS2008 만 있습니다. .NET 2.0 용 버전이 있습니까? 아니면 뭔가를 놓친 것일까 요? 고마워요 .-) –

3

컴퓨터에서 구분 기호가 지정되어 있는지 확인하십시오. 제어판> 국가 및 언어 옵션> 국가 별 옵션 탭 - 사용자 정의 버튼을 클릭하십시오. "목록 구분 기호"라는 옵션이 있습니다. 나는 이것이 세미콜론으로 설정되어 있다고 생각한다.

0

dendarii에서 언급했듯이 Excel에서 사용하는 CSV 구분 기호는 국가 별 설정, 특히 '목록 구분 기호'문자에 의해 결정됩니다.

그러나이 는 여전히 문제가 해결되지 않을 경우, 다른 가능한 합병증이 (가 쉼표로 구분 된 파일이라고 같이 그리고 엑셀, 내 의견으로는 잘못이 작업을 수행) :

확인하세요 ' 자릿수 그룹화 '문자를 사용하고 NOT을 쉼표로 구분하십시오.

10 진수를 내보낼 때 Excel이 세미콜론으로 되돌아 가고 숫자 그룹화도 쉼표로 설정되어 있습니다. 숫자 그룹을 전체 중지/마침표 (.)로 설정하면 나를 해결했습니다. 독일어 윈도우 10에 대한

0
  • 솔루션 : Change Windows system delimiter

    • 언급

    뿐만 아니라 (얇은 공간)에 . 아마 천 단위 구분에 소수 구분을 변경할 수 있습니다.

  • 가 가

    는 이것이 사실 믿을 수 없어

... 쉼표로 구분 된 값은 세미콜론으로 구분된다?

+0

가끔은 ... 탭으로! (나도 알아, 맞지?!) – Mogsdad

+0

일부 도구는 ** 탭 구분 값 ** 대신'.tsv'를 사용합니다. –

관련 문제