2016-09-23 30 views
0

我有以下代碼:裝載CSV到C#System.ArgumentException

OleDbConnection connection = new OleDbConnection(string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}; Extended Properties=""text;HDR=Yes;FMT=Delimited"";", Path.GetDirectoryName(ofd.FileName))); 
OleDbCommand command = new OleDbCommand("SELECT * FROM " + Path.GetFileName(ofd.FileName), connection); 
OleDbDataAdapter adapter = new OleDbDataAdapter(command); 
Export_btn.Enabled = false; 
Report_btn.Enabled = false; 
Start_btn.Enabled = false;   
Start_btn.Text = "Loading CSV..."; 
adapter.Fill(dt); 

而這個CSV:

enter image description here

但它返回表明該EPC列需要INT32類型的導入錯誤。而且我怎樣才能解決它?

+0

到這裏看看:https://msdn.microsoft.com/en-us/library/system.io.path.getfilename(v=vs.110).aspx'Path.GetFileName()' – Niklas

回答

0

檢查數據表結構dt。在csv文件中,epc列包含字母數字值,因此在數據表dt中,列epc應該是string類型。

0

你需要給Schema.ini文件指定的csv文件更多信息列的數據類型可以在MSDN https://msdn.microsoft.com/en-us/library/ms709353(v=vs.85).aspx

發現下面是例子Schema.ini文件中。

[YourCSVFileName.csv] 
ColNameHeader=True 
Format=CSVDelimited 
MaxScanRows=0 
DateTimeFormat=dd-MMM-yyyy 
Col1=A DateTime 
Col2=B Text Width 100 
Col3=C Text Width 100 
Col4=D Long 
Col5=E Double