none
匯入Excel資料表的問題 RRS feed

  • 問題

  • Dim Connection As System.Data.OleDb.OleDbConnection
    Dim Adapter As System.Data.OleDb.OleDbDataAdapter
    Connection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;" & "data source=D:\" & CheckName & "\Excel學生資料.xls;Extended Properties=Excel 8.0;")

    Adapter = New System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", Connection)
    Connection.Open()
    Adapter.Fill(ds)

    1.我使用上例程式碼匯入Excel資料表的資料。
    2.匯入過程完全沒有問題。
    3.資料表中的「帳號」資料欄,其內容可能是數字字串,或是文字字串。
    4. 匯入資料表後,帳號資料欄的資料若全為文字字串或全為數字字串,都能正確匯入。但若文字字串中含有數字,或是數字字串中含有文字,該筆記錄就無法匯入,請問這發生了什問題?

    敬請指導,謝謝。

    ps. 使用 VB2008, Excel 2002



    chian
    2009年2月7日 上午 02:42

解答

所有回覆

  • HI,

    請將這一行:
    Connection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;" & "data source=D:\" & CheckName & "\Excel學生資料.xls;Extended Properties=Excel 8.0;")

    改成:
    Connection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;" & "data source=D:\" & CheckName & "\Excel學生資料.xls;Extended Properties=Excel 8.0;IMEX=1")

    然後再試試看

    tihs
    • 已標示為解答 chian 2009年2月7日 下午 01:45
    2009年2月7日 上午 09:01
  • 1.感謝說明。
    2.修改程式碼後,執行  Connection.Open() 時引發「找不到可安裝的 ISAM」錯誤。
    3.請問這是何種錯誤。
    4.請問 IMEX=1 用途為何?

    敬請再指導,謝囉。
    chian
    • 已標示為解答 chian 2009年2月7日 下午 01:45
    • 已取消標示為解答 chian 2009年2月7日 下午 01:45
    2009年2月7日 上午 10:22
    • 已標示為解答 chian 2009年2月7日 下午 01:44
    2009年2月7日 下午 12:51
  • HI,

    1) 找不到ISAM可以參考:
    http://support.microsoft.com/kb/209805

    2) IMEX=1表示儲存格內容若是文字和數字混合的內容, 要當做文字處理

    tihs
    • 已標示為解答 chian 2009年2月8日 下午 12:30
    2009年2月8日 上午 03:30
  • 1.錯誤再起,因此重新發問。
    2.我使用下例程式碼讀入 Excel 檔案,由於設定 HDR=No 的關係,使得資料欄的資料內容都能順利匯入 VB 內。

    Connection = New System.Data.OleDb.OleDbConnection("provider='Microsoft.Jet.OLEDB.4.0';" & "data source=W:\Exce檔案.xls;Extended Properties='Excel 8.0;IMEX=1;HDR=No;'")

    3. 問題是,匯入 Excel 檔案之後,它會自動修改 DataSet 的 欄名稱(Columns Name)為 F1、F2....Fn。請問,我該如何修改IMEX=1;HDR=No設定,以使資料欄的內容都能匯入VB,又不會變更Columns Name。

    敬請指導,謝謝。
    chian
    2009年9月14日 下午 01:21
  • ... 你不要設定 HDR 為 No 就好了...


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年9月14日 下午 02:13
  • 1.感謝說明。
    2.我的 Excel 含有一個「學號」資料欄,它為文字格式,但匯入 VB 之後,會有許多學號遺失掉。加上HDR=No,不曉得為什麼,資料欄的資料都能正確匯入,只要拿掉它,問題就會重現。因此我在想,問題出在 IMEX=1;HDR=No 設定,我一直找不到詳細的說明資訊,因此一直無法排除問題。
    chian
    2009年9月14日 下午 02:46
  • 因為 Excel 本來就不是設計用來當資料庫的。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年9月14日 下午 03:51
  • 心得分享:

    意外發現,只要在 Excel 會漏失資料之資料欄的第一列儲存格內,插入「 ' 」字元將儲存格內容轉換為文字,該資料欄的內容就能順利匯入而不會遺失資料。
    chian
    2009年9月15日 上午 03:27