在vb.net中有一个简单的方法来加载excel文件并读取它吗?也许有一种方法来加载文件,但让用户看不到它?
答案 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对象将每个逗号分隔值解析为阵列。
虽然有点问...