좋아요. 필자의 CSV 작성기를 근본적으로 작동 시켰습니다. 그것에는 3 개의 란이있다. 이름, 위치, 날짜. 불행히도 현재 수출에는 4 개의 열이 있습니다. 성, 이름, 직책, 날짜. 그 이유는 내가 데이터베이스에서 나가는 데이터가 Last, First가되기 때문입니다. 이 분리 문자를 쉽게 변경할 수 있습니까? 이것은 매우 편리 할거야, 하하.CSV 내보내기에서 구분 기호 변경
답변
내가해야 할 일을했을 것있을 때 항목을 인용 WriteItem의 비트 :. 그런 짓을 이 여러 번, 그리고 최선의 방법은 귀하의 이름을 싸는 것입니다. 이것은 별도로 (일종의) 처리해야한다는 것을 의미합니다.
귀하의 질문에 내가 읽고있는 것을 바탕으로, Name
(LName, FName), Position
및 Date
의 세 열이있는 데이터베이스에서 SQL 구문은 다음과 같습니다. SELECT Name, Position, [Date] FROM Table WHERE ...
그리고 어딘가에 데이터 판독기가있을 것입니다.
이러한 전제를 바탕으로, 나는이 작업을 수행 할 것 :
//SQL Connection and SQL Command have been created separately as _conn and _cmd
using(SqlDataReader _read = _cmd.ExecuteReader())
{
string name = "";
string position = "";
string date = "";
while(_read.Read()) //don't really do this, make sure you're checking for nulls and such
{
name = _read.GetString(0);
position = _read.GetString(1);
date = _read.GetString(2);
AddLineToLines(string.Format("{0}|{1}|{2}", name, position, date));
//AddLineToLines is a call to add to your list of lines so you can
// write your file.
}
}
이것은 당신이 (대신 CSV의) 파이프로 구분 된 파일을 작성하고 쉼표를 탈출하는 것을 방지 할 수 있습니다.
당신이 CSV 있어야하는 경우, 변경 성 및 FIRSTNAME 사이에 쉼표를 탈출 할 마지막 string.Format
string.Format("\"{0}\",{1},{2}", name, position, date)
.
그래도 "문자를 질식시킬 것입니다. –
대부분의 CSV 파서는 데이터의 쉼표를 보정하기 위해 따옴표를 인식합니다.
"Last, First",Admin,2010/01/01
지금이 작업을 수행하고 있습니다. dataString + = string.Concat (rep.body [x] [y], ","); 기본적으로 그 배열을 통해 가서 데이터를 채 웁니다 ... 나는 단지 내가 따옴표로 묶을 수 있으면 좋겠다! – Tom
@Tom, 그런 식으로 연결하려는 경우 꽤 작아야합니다. 약 5 또는 6 항목 후에는 StringBuilder를 사용하는 것이 확실합니다. StreamWriter 기반 솔루션을 사용하는 경우 문자열을 가져 오기 위해 StringWriter를 전달할 수 있지만 나중에 웹 페이지와 같은 다른 용도로 채택하여 유연성을 극대화합니다. –
@Tom : 바퀴를 재발 명할 필요가 있습니까? 다음은 사용할 수있는 2 가지 작업 샘플입니다. http://knab.ws/blog/index.php?/archives/3-CSV-file-parser-and-writer-in-C-Part-1.html http : //www.stellman-greene.com/CSVReader/ – chilltemp
문제는 구분 기호를 변경하지 않고, 그 이후로 상호 운용되지 않습니다 (당신은 당신이 사용하고자하는 자 등이 될 수있는 쉼표로 코드에서 약간 수정 한 것)을.
문제는 올바르게 필드를 벗어나지 못했다는 것입니다.
private void WriteItem<T>(StreamWriter sr, T item)
{
string itemString = item.ToString();
if(itemString.IndexOfAny('"', ',', '\n', '\r') != -1)//skip test and always escape for different speed/filesize optimisation
{
sr.Write('"');
sr.Write(itemString.Replace("\"", "\"\""));
sr.Write('"');
}
else
sr.Write(itemString);
}
private void WriteLine<T>(StreamWriter sr, IEnumerable<T> line)
{
bool first = true;
foreach(T item in line)
{
if(!first)
sr.Write(',');
first = false;
WriteItem(sr, item);
}
}
private void WriteCSV<T>(StreamWriter sr, IEnumerable<IEnumerable<T>> allLines)
{
bool first = true;
foreach(IEnumerable<T> line in allLines)
{
if(!first)
sr.Write('\n');
first = false;
WriteLine(sr, line);
}
}
하고 ", 또는 처리됩니다 현재 개행"성, 이름 "형식
- 1. mysql 변경 구분 기호
- 2. 필드 구분 기호 변경
- 3. MySQL csv 내보내기에서 PostgreSQL csv 가져 오기?
- 4. Python csv writer 틀린 구분 기호?
- 5. Windows PowerShell의 경로 구분 기호 변경
- 6. CSV로 출력 할 때 자바에서 구분 기호 변경
- 7. Oracle CSV 내보내기에서 주석 줄을 제거하려면 어떻게합니까?
- 8. 구분 기호 배열로 분해
- 9. 셀 구분 기호
- 10. WPF 구분 기호 위치
- 11. ListView의 "구분 기호"
- 12. 루비 YAML 구분 기호
- 13. Python의 문자열 구분 기호
- 14. 더 나은 SQL INJECTION 처리를위한 Mysql 변경 구분 기호?
- 15. acts-as-taggable-on을 사용하여 기본 구분 기호 변경
- 16. Clip UITableView 셀의 구분 기호
- 17. Ext.form.NumberField의 천 단위 구분 기호
- 18. 안드로이드 스캐너 구분 기호 문제
- 19. 잘못된 위치에있는 UITableView 구분 기호
- 20. C# char "//"경로 구분 기호
- 21. 랩 패널 항목 구분 기호
- 22. 텍스트 상자 안의 구분 기호
- 23. 비정상적인 구분 기호 '공백 + 탭'
- 24. UISegmentedControl의 어둡게 세그먼트 구분 기호
- 25. C#의 십진수 구분 기호
- 26. 자바 스캐너 구분 기호 사용법
- 27. 문자열의 보이지 않는 구분 기호 (
- 28. ListView (WPF)의 구분 기호?
- 29. 이동 경로 구분 기호 코드?
- 30. UTF-8 문자열 구분 기호
파일을 직접 만드십니까? – Achilles
줄 단위로 파일을 만듭니다. 그래서 기본적으로 이것은 3 개의 열인 머리글 다음에 짜증납니다. Smith, John | Position | Date 대신 Smith | John | Position | Date를 얻습니다. – Tom