VB.net OLEDB连接Excel文件

神奇的VBA 2020-02-22 09:29:40
    Public Function ExcTansposeAbf(ByVal strCollection As List(Of String), ByVal strTableInExcel As String) As Array
Dim brr(0 To 1, 0 To 1) As String
For intIndexInCollection As Integer = 0 To strCollection.Count - 1
If Strings.Right(strCollection(intIndexInCollection), 4) Like "*xls*" Then
Dim cnString As String = "provider=Microsoft.ACE.OLEDB.12.0;Data Source =" & strCollection(intIndexInCollection) & ";Extended Properties ='Excel 12.0;HDR = No;IMEX = 0';"
Dim cnDataset As New DataSet
Using cnCollection As New OleDbConnection(cnString)
Using cnAdapter As New OleDbDataAdapter("select * from [" & strTableInExcel & "$]", cnCollection)
Try
cnAdapter.Fill(cnDataset, strTableInExcel)
Catch ex As System.InvalidOperationException
brr(0, 0) = "Error_Oledb_InvalidOperationException"
Return brr
Catch ex As System.Data.OleDb.OleDbException
Continue For
Catch ex As System.Runtime.InteropServices.SEHException
brr(0, 0) = "Error_Oledb_InteropServices.SEHException"
Return brr
Finally
cnCollection.Dispose()
cnAdapter.Dispose()
End Try
End Using
End Using
Dim arr(0 To cnDataset.Tables(strTableInExcel).Rows.Count - 1, 0 To cnDataset.Tables(strTableInExcel).Columns.Count - 1) As String
Try
For i As Integer = 0 To cnDataset.Tables(strTableInExcel).Rows.Count - 1
For j As Integer = 0 To cnDataset.Tables(strTableInExcel).Columns.Count - 1
If Not IsDBNull(cnDataset.Tables(strTableInExcel).Rows(i).Item(j)) Then
arr(i, j) = cnDataset.Tables(strTableInExcel).Rows(i).Item(j)
End If
Next
Next
If Not arr(0, 18) Like "*中华人民共和国海关进口货物报关单*" Then arr(0, 0) = "Err_Arr_RangeS2Lost"
Return arr
Catch
brr(0, 0) = "Error_Oledb_DataSetToArray"
Return brr
Finally
cnDataset.Dispose()
End Try
End If
Next
brr(0, 0) = "Error_Oledb_CantFindExcel"
Return brr
End Function


参数一是一个列表,参数二是Sheet名称。
函数的作用是在一堆Excel文件中找出正确的那个Excel文件,并转化为数组,供另外的函数使用,因为另一个函数的参数是数组,所以这里没用DataTable.
求大神改善一下这堆看着让人难受的代码,看着难受,执行的时候难等。
...全文
308 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧