vb.net程序直接读取Excel文件内容

Public Function ExcelToDataTable_Copy(ByVal xlsFileName As String, ByRef ErrMsg As String) As DataTable

        Try

            Dim SheetName As String

            Dim dt As DataTable

            dt = New DataTable

            Dim sExcelFile As String

            sExcelFile = xlsFilaName

            Dim sConnectionString As String

            Dim TmpFileName As String

            Dim strFilePath As String

            Dim myExcel As Excel.Application = New Excel.Application

            Dim missing As Object = System.Reflection.Missing.Value

            strFilePath = “ddd”

            myExcel.Application.Workbooks.Open(strFilePath)

            Dim mybook As Excel.Workbook = myExcel.Workbooks(1)

            Dim sheet As Excel.Worksheet = mybook.Sheets(1)

            Dim strSheetName As String = sheet.Name

            mybook.Close()

            myExcel.Quit()

            mybook = Nothing

            myExcel = Nothing

            TmpFileName = I_FILE_NAME.Text.Trim.Substring(I_FILE_NAME.Text.LastIndexOf("."), I_FILE_NAME.Text.Length - I_FILE_NAME.Text.LastIndexOf("."))

            'Excel2007

            If TmpFileName.Equals(".xlsx") Then

                sConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sExcelFile & "; Extended Properties='Excel 12.0;HDR=NO;IMEX=1;'"

                'Excel2003

            ElseIf TmpFileName.Equals(".xls") Then

                sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sExcelFile & "; Extended Properties='Excel 8.0;HDR=YES;IMEX=1;'"

            End If

            Dim connection As OleDb.OleDbConnection

            connection = New OleDb.OleDbConnection(sConnectionString)

            connection.Open()

            dt = connection.GetOleDbSchemaTable(OleDb.OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"})

            Dim sql_select_commands As String

            sql_select_commands = "Select * from [" + strSheetName + "$]"

            Dim adp As OleDb.OleDbDataAdapter

            adp = New OleDb.OleDbDataAdapter(sql_select_commands, connection)

            Dim ds As Data.DataSet

            ds = New Data.DataSet()

            adp.Fill(ds, strSheetName)

            dt = ds.Tables(0)

            If (connection.State = ConnectionState.Open) Then

                connection.Close()

            End If

            ErrMsg = CheckTableInfo(dt)

            Return dt

        Catch ex As Exception

            Select Case Err.Number

                Case Else

                    MSG = Trim(GetMsgDesc(10024)) & " = " & Str(Err.Number) & vbCrLf & Trim(GetMsgDesc(10025)) & " = " & Err.Source

                    MSG = MSG & vbCrLf & Trim(GetMsgDesc(10026)) & vbCrLf & Err.Description

                    MsgBox(MSG, MsgBoxStyle.Critical)

            End Select

            Err.Clear()

            BWrite(ex.Message.ToString())

        End Try

    End Function

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值