我發現這個問題不少人在問,而且被視為絕症。
我今天本來要用寫過的程式進行轉檔,卻發現自己沒有注意到這個問題,以致於連上了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
就會看到以下的畫面
各分頁名稱都抓出來了,這真的是令人高興啊。
原來要抓取EXCEL 的分頁名稱,在下達SQLTABLE()指令時,CTableTypes是要用零字串才抓得到,這可真的是讓人想都想不到,卻讓我瞎搞碰出來了,呵呵,我在此自誇我是救星應該不為過吧。
最後,如果本文對您有所助益的話,請不要吝嗇幫忙點一下旁邊或是上面的廣告,贊助一下個人吧,感謝您!
你也可以再參考這一篇http://yujngchuang.pixnet.net/blog/post/405356014/
留言列表