none
如何讀取 Excel 裡的資料內容 RRS feed

  • 問題

  • 我想請問如何取得Excel Sheet的資料!?
    我可以抓到Sheet,但就是無法抓到第一列的資料

    Excel 資料內容如下

    [Sheet1]

    Column1  Column2  Column3 
    1             4             7
    2             5             8
    3             6             9

    我的資料都是讀到1 2 3   4 5 6   7 8 9
    要怎麼把第一列抓出來呢?

            Dim olecon As OleDb.OleDbConnection
            Dim olecomm As OleDb.OleDbCommand
            Dim oleadpt As OleDb.OleDbDataAdapter
            Dim ds As System.Data.DataSet
            Dim lstSheetName As New List(Of String)  '把所有sheet name 存下來
    
            Try
                olecon = New OleDb.OleDbConnection
                olecon.ConnectionString = connstring
                olecon.Open()
       
    
                Dim dt As DataTable = olecon.GetOleDbSchemaTable(OleDb.OleDbSchemaGuid.Tables, _
    
                       New Object() {Nothing, Nothing, Nothing, "TABLE"})
    
                'Sheet Count
    
                Dim iSheetCount As Integer = dt.Rows.Count
                For Each dr As DataRow In dt.Rows
                    'Get SheetName
                   lstSheetName.Add(dr("TABLE_NAME"))
                Next
    
                For i As Integer = 0 To iSheetCount - 1
                    olecomm = New OleDb.OleDbCommand
                    olecomm.CommandText = "Select * from [" & lstSheetName(i) & "]"
                    olecomm.Connection = olecon
                    oleadpt = New OleDb.OleDbDataAdapter(olecomm)
                    ds = New System.Data.DataSet
                    oleadpt.Fill(ds, lstSheetName(i))
    
                     For r As Integer = 0 To ds.Tables(0).Rows.Count - 1
                        For c As Integer = 0 To ds.Tables(0).Columns.Count - 1

                            Debug.Print(ds.Tables(0).Rows(r)(c))
                        Next c
                    Next r Catch ex As Exception Finally olecon.Close() olecon = Nothing olecomm = Nothing oleadpt = Nothing ds = Nothing End Try

    2009年6月24日 上午 10:11

解答

  • 這問題跟您的連線字串有關,剛好您沒有 post 出來

    請參考此連線字串

            Dim connstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Excel.xls;Extended Properties=""Excel 8.0;HDR=NO;IMEX=1"""

    重點是 HDR = NO

    參考此網站

    http://www.connectionstrings.com/excel

    其中

    "HDR=Yes;" indicates that the first row contains columnnames, not data.
    "HDR=No;" indicates the opposite.

     


    .NET菜鳥自救會 http://www.dotblogs.com.tw/chou/

    2009年6月24日 上午 10:55
    版主

所有回覆

  • 這問題跟您的連線字串有關,剛好您沒有 post 出來

    請參考此連線字串

            Dim connstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Excel.xls;Extended Properties=""Excel 8.0;HDR=NO;IMEX=1"""

    重點是 HDR = NO

    參考此網站

    http://www.connectionstrings.com/excel

    其中

    "HDR=Yes;" indicates that the first row contains columnnames, not data.
    "HDR=No;" indicates the opposite.

     


    .NET菜鳥自救會 http://www.dotblogs.com.tw/chou/

    2009年6月24日 上午 10:55
    版主
  • 用 Oledb 查詢 Excel 時,table name = SheetName + $
    例如:Sheet1$
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年6月24日 上午 11:27

  • 謝謝,找到問題了!!

    原來是HDR設為Yes!!

    再次感謝
    2009年6月25日 上午 01:03