使用vb.net从Excel文件获取列表列表

时间:2018-10-17 17:40:17

标签: excel vb.net

我想用vb.net读取一个excel文件,并根据它具有的数据获取一个字符串列表列表。数据将始终被构造为具有5列和N行数的表,第一行为标题。

这将在Windows窗体应用程序中完成。我已经看到假设此人已经安装了Excel的示例。但是,我必须考虑到他们可能没有的事实。

我如何在vb.net中做到这一点?如果我使用的是python,我知道我可以简单地使用Pandas并轻松完成它。有没有简单的方法可以做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:0)

我使用数据表提取工作表名称,因为在我的应用程序中,用户正在上传各种工作表,但我不知道工作表名称。您可能可以跳过这一步,以“ dim cmd”开始

    Dim FileName As String = Application("WebRoot") & "\uploads\1.xlsx"
    Dim cn As OleDbConnection = New OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & FileName & "';Extended Properties=""Excel 8.0;HDR=NO;IMEX=1"";")
    cn.Open()
    Dim dt As DataTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"})
    cn.Close()
    cn = Nothing
    Dim Source As String = dt.Rows(0)!TABLE_NAME.ToString().Replace("'", "")
    dt.Dispose()
    dt = Nothing
   'all the above just to get the sheetname (source)

    Dim cmd As New OleDbCommand
    cmd.Connection = New OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & FileName & "';Extended Properties=""Excel 8.0;HDR=No"";")        
    cmd.CommandText = "select * from [" & Source & "]"
    cmd.Connection.Open()
    Dim sb As New StringBuilder
    Dim rd As OleDbDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
    rd.Read 'skip the header row
    Do While rd.Read
       '0 is columnA, 1 is columnB, and so on
       'so below will append the text in columnB to the stringbuilder
       sb.Append(rd(1).toString & VbCrLf)
    Loop
    'Not sure what you want to do with the string?