좋아, 이것은 고객 데이터를 데이터베이스로 가져 오는 아주 간단한 작업으로 시작되었습니다. 아래 스크립트는 모든 데이터를 메모리에로드 한 다음 조작을 허용합니다.CSV에서 데이터 가져 오기
string ConString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"" + FileLoc + "\"; Extended Properties=\"text;HDR=Yes;FMT=Delimited(,)\"";
using (OleDbConnection conn = new OleDbConnection(ConString))
{
using (OleDbCommand cmd = new OleDbCommand("SELECT * FROM DataInput.csv", conn))
{
conn.Open();
using (OleDbDataReader dr = cmd.ExecuteReader(CommandBehavior.SequentialAccess))
{
int RowNumber = 0;
while (dr.Read())
{
if(RowNumber==0)
{
for (int i = 0; i < dr.FieldCount; i++)
{
TitleData.Add(new CSVTitleData() {ColumnID = i,ColumnName = dr.GetValue(i).ToString()});
}
}
else
{
var DataToInsert = new List<CSVData>();
for (int i = 0; i < dr.FieldCount; i++)
{
if (i == 8)
{
var A = dr.GetValue(i);
Console.WriteLine(A.GetType().ToString() + " - " + i);
}
DataToInsert.Add(new CSVData(){ColumnID = i,Value = dr.GetValue(i).ToString()});
}
Content.Add(DataToInsert);
}
RowNumber++;
}
}
}
}
Excel에서 영리을 시도하고 int로 각 필드를 읽어
4950
4951
4952
4998
2024
4176
7025-1
RVAC010
RVAC011
4945
4946
4947
4948
같은 데이터가있을 때까지이 잘 작동합니다. 결과 int는 DBNull로 읽히는 글자를 가진 것입니다.
이제 약간의 독서를 했으므로이 질문에는 해결책이 없지만 많은 사람들이 있습니다. 가능한 해결책 중 하나는 Scheme.ini를 만드는 것입니다. 누군가 내가 정확한 형식으로 나를 도울 수 있는지 궁금합니다.
아니면 CSV로 읽는 것이 더 쉬웠습니까?
그냥 참고로 ... CsvReader, CSV로 LINQ는 달리, 읽는 각 값을 변환해야합니다. LINQ to CSV를 사용하면 CSV 파일의 행을 나타내는 구체적인 클래스를 정의 할 수 있으며 각 값을 속성으로 자동 변환합니다. – jrista