vb.net遍历xls / xlsx文件?

时间:2009-06-12 22:25:02

标签: vb.net excel

在vb.net中有一个简单的方法来加载excel文件并读取它吗?也许有一种方法来加载文件,但让用户看不到它?

4 个答案:

答案 0 :(得分:1)

直接从.NET使用Excel Object Model

答案 1 :(得分:1)

您可以使用ado.net通过OLEDB JET 4提供商从Excel电子表格中读取

这只是将excel文件作为文件流打开,而不是打开实际的Excel电子表格。

或者,您可以使用com-interop并将应用程序对象的visible属性设置为false。

请参阅http://www.connectionstrings.com/excel

当使用.net和com与任何办公应用程序互操作时,需要注意的是,如果您尝试以比实际人类用户更多的Windows服务用户身份打开应用程序,那么您需要登录到Windows作为该用户并以该用户身份打开相关应用程序,以便为办公应用程序的某些功能正确更新所有注册表项。

答案 2 :(得分:1)

Alex - 这是我挖出来查询excel的一些旧代码。非常基本的场景。不要注意糟糕的错误处理和缺乏“使用”结构。

Dim connString As String = "Provider=Microsoft.Jet.OLEDB.4.0" & _
                           ";Data Source=" & ExcelFile & _
                           ";Extended Properties=Excel 8.0;"

Dim conn As OleDbConnection = Nothing
Dim dt As System.Data.DataTable = Nothing
Dim excelDataSet As New DataSet()

Try

    conn = New OleDbConnection(connString)

    conn.Open()
    dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)

    If dt Is Nothing Then
        Return Nothing
    End If

    Dim excelSheets(dt.Rows.Count) As String
    Dim i As Integer = 0
    For Each row As DataRow In dt.Rows
        excelSheets(i) = row("TABLE_NAME").ToString
        System.Math.Min(System.Threading.Interlocked.Increment(i), i - 1)
        If i = SheetNumber Then
            Exit For
        End If
    Next

    Using excelCommand As New OleDbCommand("Select * from [" & excelSheets(SheetNumber - 1) & "]", conn)
        Using excelAdapter As New OleDbDataAdapter(excelCommand)
            excelAdapter.Fill(excelDataSet)
        End Using
    End Using


Catch ex As OleDbException
    Throw
Catch ex As Exception
    Throw
Finally

    conn.Close()

    If conn IsNot Nothing Then
        conn.Dispose()
    End If

    If dt IsNot Nothing Then
        dt.Dispose()
    End If

End Try

Return excelDataSet

答案 3 :(得分:0)

如果你有一个不需要动态的更简单(即小)excel电子表格,我认为你可以将它导出为逗号分隔文件,然后使用循环和streamreader对象将每个逗号分隔值解析为阵列。

虽然有点问...