从csv文件获取数据表

时间:2014-05-17 08:51:31

标签: vb.net winforms csv oledb

我使用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文件做同样的事情。 。 。 。

2 个答案:

答案 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