DataTable을 CSV 파일로 변환하는 코드를 채택했습니다. 실제 데이터에서 쉼표가 사용되는 경우를 제외하고는 제대로 작동하는 것 같습니다. 이 경우 쉼표를 표시하는 방법이 있습니까? 이것이 내가 한 것입니다 :DataTable을 CSV로 내보낼 때 쉼표 문제가 발생했습니다.
답변
필드에 쉼표가 있으면 이중 따옴표로 묶어야합니다.
FileHelpers library을 사용하여 CSV 파일을 만들 수 있습니다. 제대로 탈출해야합니다.
라이브러리를 사용하지 않으려는 경우 필수 항목은 다음과 같습니다. 쉼표가 있으면 필드를 따옴표 안에 넣어야합니다. 당신의 분야 따옴표가 포함 된 경우
ID, NAME
1, "Doe, John"
2, 'Doe, Jane'
, 당신은 추가 견적을 탈출해야합니다
3, "Anakin ""Darth Vader"", Skywalker"
4, 'O''Connor, Sinead'
가능한 솔루션 :
static string CsvEscape(this string value) {
if (value.Contains(",")) {
return "\"" + value.Replace("\"", "\"\"") + "\"";
}
return value;
}
그리고 다음 코드 :
IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString().CsvEscape());
추 신 : accor Wikipedia으로 보내면 실제 csv 사양은 없지만 RFC 4180은 자주 사용되는 형식을 설명합니다.
"OP"를 그의 코드의 많은 부분으로 저장하려면 필드 선택에서'@ "\" "+ field @"\ ""'를 사용하십시오 ? :) – LukeHennerley
@ LukeHennerley - 친절하게 설명해 주시겠습니까? :) –
@DotNET 분리자를 데이터 안에 넣을 수있는 상황이 있다면 이중 따옴표로 데이터를 싸야합니다. "" " – LukeHennerley
아래 수정 코드가 게시되어 도움이 될 것입니다.
StringBuilder sb = new StringBuilder();
string[] val = { "ramesh","suresh, Ganesh" };
IEnumerable<string> columnNames = val;
IList<string> objFinal = new List<string>();
foreach (string v in columnNames)
{
string temp = v;
if (temp.Contains(","))
temp = "\"" + v + "\"";
objFinal.Add(temp);
}
sb.AppendLine(string.Join(",", objFinal.AsEnumerable<string>()));
}
CSV는 두 코드 간의 데이터에서 쉼표를 지원합니다.
당신은 코드의 아래에 한 줄의 도움으로 하나의 샷 이중 코드뿐만 아니라 쉼표를 추가 할 수 있습니다
IEnumerable<string> columnNames = dtResults.Columns
.Cast<DataColumn>()
.Select(column => column.ColumnName);
var res = columnNames.Aggregate((current, next) => "\"" + current + "\"" + ", " + "\"" + next + "\"");
File.WriteAllText(saveFileDialog.FileName, res.ToString());
[CSV 데이터에서 쉼표] (의
- 1. CSV로 내보낼 때 열의 가시성
- 2. 결과를 CSV로 내보낼 때 시스템 개체 오류가 발생했습니다
- 3. DataSet \ DataTable을 CSV로 변환
- 4. Mongoimport : CSV로 쉼표 이스케이프
- 5. CSV로 내보낼 때 다른 열로 전환하는 방법
- 6. R에서 CSV로 내보낼 때 권한이 거부되었습니다
- 7. \ xc9 데이터 프레임을 CSV로 내보낼 때
- 8. Firefox에서 CSV 데이터를 내보낼 때 오류가 발생했습니다.
- 9. BigQuery : CSV로 내보낼 수 없습니다.
- 10. Powershell을 사용하여 datatable을 CSV로 저장하십시오.
- 11. CSV로 데이터를 내보낼 때의 문제
- 12. DataTable을 ASP.Net GridView 컨트롤에 바인딩 할 때 문제가 발생했습니다.
- 13. PHPExcel을 CSV로 내보낼 수 없습니다.
- 14. 단일 CSV로 내보낼 PowerShell 스크립트
- 15. PSQL을 사용하여 Redshift에서 데이터를 내보낼 때 문제가 발생했습니다.
- 16. ReportViewer 컨트롤에서 파일을 내보낼 때 글꼴 문제가 발생했습니다.
- 17. 엑셀 페이지로 내보낼 때 자바 날짜 문제가 발생했습니다.
- 18. 식을 사용하여 SSRS에서 CSV로 내보낼 때 필드를 숨기기
- 19. CSV로 데이터를 내보낼 때 통화 기호에 정크 문자 추가
- 20. jQuery dataTable을 CSV로 내보내는 방법은 무엇입니까?
- 21. SQL 쿼리를 CSV로 내보낼 때 출력 형식을 지정하는 방법
- 22. Microsoft.Office.Interop.Excel을 사용하여 Excel을 내보낼 때 오류가 발생했습니다.
- 23. 보관 파일을 내보낼 때 오류가 발생했습니다
- 24. Python에서 여러 형식으로 CSV로 내보낼 수 없습니다.
- 25. CSV로 내보낼 때 radgrid의 템플릿 열에있는 리피터 데이터가 표시되지 않습니다.
- 26. mysql을 csv로 내보낼 때 임의 필드 이름 가져 오기
- 27. MS Excel : csv로 내보낼 때 변경된 날짜 형식을 얻는 방법?
- 28. SSRS에서 CSV로 보고서를 내보낼 때 숨겨진 데이터를 제외하는 방법은 무엇입니까?
- 29. asp.net에서 csv로 내보낼 때 Gridview 열 머리글이 누락되었습니다.
- 30. CSV로 내보낼 때 복사 한 워크 시트 닫기
가능한 중복 http://stackoverflow.com/questions/4123875/commas-within-csv-data) – ChrisF
또 다른 가능한 중복 : http://stackoverflow.com/questions/769621/dealing-with-commas-in-a-csv-file –
'field.ToString() ''NullReferenceException'을 일으킬 수 있습니다. 'string.Join (","row.ItemArray)'를 사용하십시오. –