내 CSV에 대한 질문이 있습니다. CSV를 내보내고 C#으로 읽습니다. CSV의 각 행의 마지막 열은 A, B, C, D, E 또는 G입니다. 자, 내 CSV를 조각처럼 잘라 내고 싶습니다. A와 D가 포함 된 선으로 새로운 CSV를 원합니다. 예를 들어 B와 C가 포함 된 또 다른 CSV가 필요합니다.값에 따라 다른 CSV 파일
누구나 올바른 방향으로 나를 가리킬 수 있습니까? 나는
이
이StreamReader debtors = new StreamReader(@"C:\CSV\Debtors.csv");
StreamWriter debtorsMetaal = new StreamWriter(@"C:\CSV\DebtorsMetaal.csv");
StreamWriter debtorsSystemen = new StreamWriter(@"C:\CSV\DebtorsSystemen.csv");
StreamWriter debtorsHolding = new StreamWriter(@"C:\CSV\DebtorsHolding.csv");
while(debtors.Peek() >=0)
{
string line = debtors.ReadLine();
try
{
string[] rowsArray = line.Split(';');
//..... etc
지금 선이 조각에 내 코드의 일부이다 .. 붙어있어,하지만 어떻게 내가 내 라인의 마지막 colomn을 선택에 따라 새로운 CSV 파일을 만들 수 있습니다 마지막 컬럼의 값은?
debtorsMetaal, debtorsSystemen 및 debtorsHolding이 새로운 CSV 파일이됩니다.
예 : 나는 정보를 원하시면 다음 한 CSV의 행에서
number - name- description - type
유형은 이제 라인을 원하는 위치 타입 = A와 A, B, C, D, E 또는 G. 을가 될 수 있습니다 lines 여기서 type = D는 하나의 CSV 파일에 함께 표시됩니다. 이것도 가능합니까?
값 A, B, C, D, E 또는 G는 항상 Excel 형식의 열 AJ로 표시됩니다. 그러나
var adLines = new List<string>();
var bcLines = new List<string>();
var unknownLines = new List<string>();
var adList = new[]{"A", "D"};
var bcList = new[]{"B", "C"};
using(var debtors = new StreamReader(@"C:\CSV\Debtors.csv"))
{
string line = null;
while((line = debtors.ReadLine()) != null)
{
string[] columns = line.Split(';'); // you should check if columns.Length is correct
string lastColumn = columns.Last().Trim();
if(adList.Contains(lastColumn, StringComparer.CurrentCultureIgnoreCase))
adLines.Add(line);
else if(bcList.Contains(lastColumn, StringComparer.CurrentCultureIgnoreCase))
bcLines.Add(line);
else
unknownLines.Add(line);
}
}
File.WriteAllLines(@"C:\CSV\DebtorsSystemen.csv", adLines);
File.WriteAllLines(@"C:\CSV\DebtorsHolding.csv", bcLines);
일반적으로 당신은 바퀴를 재발견하지 말아야과 같은 abvailable CSV 파서를 사용합니다 :
당신이 누락 나머지 동안 블록? 왜 목록으로 읽을 수 없으며 마지막 열을보고 어떤 파일을 쓸지 확인하십시오. –
Harrison
CSV 파일을 읽는 것은 생각만큼 쉽지 않습니다. 나는이 도서관을 보길 권한다 : http://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader – M4N
나는 더 많은 정보를 추가했다 – Matheno