close

我發現這個問題不少人在問,而且被視為絕症。

我今天本來要用寫過的程式進行轉檔,卻發現自己沒有注意到這個問題,以致於連上了EXCEL檔,卻看不到檔內的SHEET名稱。

在大量的搜尋網路後,發現好像VFP無法用SQLTABLE()指令找到SHEET名稱。

而在VFP 的求助檔中載明SQLTABLES用法如下,

SQLTABLES(nStatementHandle [, cTableTypes] [, cCursorName])

CTableTypes的標明方式有'TABLE'、'VIEW'、'SYSTEM TABLE'。

這些指令我都用了,也都抓不到SHEET名稱。網路上也看不到任何可行的方式,倒是C#有這樣的指令:

OdbcConnection myConnection = new OdbcConnection(connectionString);

 myConnection.Open();DataTable data = myConnection.GetSchema("Tables");  //這樣就抓到了

myConnection.Close(); 

好,別難過,救星來了,那個人就是我(很厚臉皮)。我在搜尋了網路近2小時後,發現找不到解決方案。於是試著下了一個指令,發現其實VFP 也抓得到,只是方式有點離譜,而大家都想不到而已。

我在網路下載了的樂透彩資料後,進行了ODBC的連線。

連線字串

Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};;=XLS;DBQ=D:\TEMP\ALL_LOTTO.XLS ;

&&DBQ=D:\TEMP\ALL_LOTTO.XLS 是檔案位置

接著下達指令

=SQLTables(連線編號, '' ,"gtable")

SELECT gtable

BROWS

就會看到以下的畫面 

  sqltable   

各分頁名稱都抓出來了,這真的是令人高興啊。

原來要抓取EXCEL 的分頁名稱,在下達SQLTABLE()指令時,CTableTypes是要用零字串才抓得到,這可真的是讓人想都想不到,卻讓我瞎搞碰出來了,呵呵,我在此自誇我是救星應該不為過吧。

最後,如果本文對您有所助益的話,請不要吝嗇幫忙點一下旁邊或是上面的廣告,贊助一下個人吧,感謝您!  

你也可以再參考這一篇http://yujngchuang.pixnet.net/blog/post/405356014/

arrow
arrow
    全站熱搜
    創作者介紹

    Mis人員的研究 發表在 痞客邦 留言(0) 人氣()