我使用oledb连接和查询从.xls和.xlsx文件中检索数据到Datatable它在这里运行良好的代码
连接字符串
MyConnection1= New System.Data.OleDb.OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0 ;Data Source=" & spath1 & " ;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'")
查询代码
Dim connection As OleDbConnection = MyConnection1
Dim query As String = "select * from [" & Sheet1name & "]"
Dim dA As New OleDbDataAdapter(query, MyConnection1)
Dim dsA As New DataSet
dA.Fill(dsA)
Dim tablFille AS Datatable = dsA.Tables(0)
但我不知道如何对.csv文件做同样的事情。 。 。 。
答案 0 :(得分:1)
string file = "(Write your file name here)";
OleDbConnection conn = new OleDbConnection
("Provider=Microsoft.Jet.OleDb.4.0; Data Source = " +
Path.GetDirectoryName(file ) +
"; Extended Properties = \"Text;HDR=YES;FMT=Delimited\"");
conn.Open();
OleDbDataAdapter adapter = new OleDbDataAdapter
("SELECT * FROM " + Path.GetFileName(file), conn);
DataSet ds = new DataSet("TempDS");
adapter.Fill(ds);
conn.Close();
答案 1 :(得分:0)
我发现使用FileHelpers引擎既简单又快捷。 http://filehelpers.sourceforge.net/
您只需定义您的文件,这个文件是虚构的customer.csv
<DelimitedRecord(",")> _
Public Class Customer
Public CustId As Integer
Public Name As String
Public Balance As Decimal
<FieldConverter(ConverterKind.Date, "dd-MM-yyyy")> _
Public AddedDate As DateTime
End Class
你可以使用引擎
Dim engine As New FileHelperEngine(GetType( Customer))
' To Read Use:
Dim res As Customer() = DirectCast(engine.ReadFile("FileIn.txt"), Customer())
For Each cust As Customer In res)
Console.WriteLine("Customer Info:")
Console.WriteLine(cust.Name + " - " + _
cust.AddedDate.ToString("dd/MM/yy"))
Next