2012-04-03 3 views
0

고객 정보를 CSV로 내보내 클라이언트가 Excel에서이 정보로 작업하고 앱으로 다시 가져올 수 있도록합니다.C#으로 CSV 파일로 데이터를 내보내려면 어떻게해야합니까?

CSV 파일 자체를 편집하면 완벽하게 작동하지만 Excel이 열리고 파일을 저장하면 모든 CSV 구조가 손실됩니다.

따옴표가 제거되고 세미콜론도 제거됩니다.

우리의 수출 코드는 이제 다음과 같습니다

Response.Clear(); 
Response.ClearHeaders(); 
Response.ClearContent(); 
Response.AddHeader("content-disposition", string.Format("attachment;filename=export_dealers_{0}_{1:yyyy-MM-dd-HH-mm}.csv; charset=utf-8", countryCode, DateTime.Now)); 
Response.ContentType = "text/csv"; 
Response.AddHeader("Pragma", "public"); 
Response.ContentEncoding = System.Text.Encoding.UTF8; 
Response.BinaryWrite(Encoding.UTF8.GetPreamble()); 
Response.Write(ToCsv(list)); 
Response.Flush(); 
Response.End(); 

toCSV 기능은 세미콜론으로 구분 된 모든 필드에 따옴표 내에서 각각의 문자열을 반환합니다.

우리는했다 그것을 다른 전에하지만 ç 또는 ñ 같은 특수 문자를 V 곡하지 않도록

위의 코드 조각은 CSV 파일을 수출 ..., 별도의 인코딩 데이터를 추가했다 그 정확한 것 같지만 Excel이 열어 필드를 변경하지 않고 저장하면 모든 세미콜론과 따옴표가 제거되고 Save as 기능을 시도하면 CSV 대신 .txt 파일로 저장됩니다.

답변

0

이 나를 위해 잘 작동합니다 : 그것은 간단한 형태의에서

var lines = new string[10][]; 

var csv = string.Join("\r\n", lines.Select(words => 
       string.Join(",", words.Select(word => 
        "\"" + word.Replace("\"", "\"\"") + "\""))))); 

File.WriteAllText("file.csv", csv); 

Excel에서 읽습니다.

+0

나는 이것을 시험해 보겠다.하지만 단순한 것으로 보인다. :) ñ 나 ç와 같은 특수 문자는 어떨까? 프랑스어와 스페인어 및 기타 언어가 이러한 불규칙한 문자로 가득 차 있기 때문에 :) 그 때문에 우리는 모든 인코딩 작업을해야했습니다. – Sander

+0

결국 텍스트 파일처럼 저장하고 쉼표로 구분합니다. 텍스트 파일이 문자를 지원하면 csv도 지원되므로 Excel에서도 효과적입니다. – SimpleVar

+0

주요 차이점은 파일에 저장하지 않고 사용자에게 직접 데이터 스트림으로 출력한다는 것입니다. 우리는 헤더를 설정하고 utf8로 인코딩해야합니다. 파일로 저장할 수 있습니다. 물론 시도해 볼 수 있습니다 ... 오늘 오후 늦게 무엇을하는지 보겠습니다. – Sander

관련 문제