如何用VB6.0寫讀CSV檔?
請問大大們,我手邊有一個CSV檔與一個commandbutton,按下CommandButton後出現一個開啟檔案的對話框(用來指定檔案路徑及檔案)後,將指定的csv檔資料讀進來,請問我該怎麼用VB實現呢@@?
|
Dim P As String
Dim III As Integer, JJJ As Integer Dim JetTemp$ Dim AA$() With CommonDialog1 .CancelError = True .Flags = cdlOFNOverwritePrompt .DialogTitle = "選擇儲存路徑及檔名" .Filter = "Excel CSV File (*.csv)|*.csv" .InitDir = "c:\" .FileName = "Out" & ".CSV" .ShowOpen P = .FileName End With If Dir(P) = "" Then Exit Sub III = FreeFile Open P For Input As #III Do While Not EOF(III) Line Input #III, JetTemp$ AA() = Split(JetTemp, ",") For JJJ = LBound(AA) To UBound(AA) Debug.Print JJJ & "=" & AA(JJJ) Next JJJ Loop Close #III 在迴圈中的 AA(JJJ) 即是 每一個櫚位值 試看看吧,再改成泥要的結果 |
謝謝大大解答..
最後實際上在run的時候,會變成循序讀檔在第一次的input時,就把所有的資料讀了進來,也就是所有csv資料都塞進去同一個變數之中,之後剩餘的參數都是空的 :dcft689kj 因此只好硬著頭便慢慢一步一步把資料給分解出來 dim point(1 To 256),sp dim num,num1 . . Line Input #1, sp . For num = 1 To 256 '事先知道csv資料只有256筆 Do Until Mid(sp, num1, 1) = Chr(10) 'csv資料是以chr(10)隔開,若讀出資料不等於chr(10)則持續迴圈 point(num) = point(num) + Mid(sp, num1, 1) '將SP內的資料由最左邊開始慢慢逐一取出並存進point(num)內 num1 = num1 + 1 Loop num1 = num1 + 1 Next 最後run下來就可以把csv的資料慢慢分解回num(1 to 256)陣列之內 |
用 CHR(10) 做分格?!小弟以為 是用 "," 做分格
那要不要試試把偶那段程式碼的 AA() = Split(JetTemp, ",") 改成 AA() = Split(JetTemp, CHR(10)) 再試試看 另外,泥那樣做也有點累 dim point() as string ==> 型別可視你的情況而定 那個迴圈可以試著改成 point() = Split(sp, CHR(10)) |
果然把AA() = Split(JetTemp, ",")改成AA() = Split(JetTemp, CHR(10))之後,讀檔就正常了^^
小弟學藝不精,竟然不知道還有Split()參數可以用,多花了不少時間把資料給解析出來 :dcft689kj 真是謝謝大大的指導 :ddrf567h: |
引用:
有時候當泥不知道一些好東西工具時,往往會多走很多冤枉路,還不一定會做好!! 做了半天效能還不如已經有的∼∼ split 以前偶也是不知道有這樣的東西,也是看人家用才慢慢學著用!! 還不錯用~~用的機會也是很多,像是解析參數啦、文字檔....! 指導不敢當,互相研究而己!! :bj375mg: |
厚,差點沒被氣死(苦笑)
別人說我的程式跑起來有BUG,結果我去瞄了一下才發現.. 程式去到別人那裡,再去讀CSV之後就掛掉.. 原因是,人家的CSV竟然沒有分隔符號 :decfghi6: 吐吐苦水,後來就LINE INPUT到EOF(#FILE)直接讀,直接丟進陣列裡來用就行了 :dcft689kj |
引用:
真的沒分隔符號就真的沒辦法了∼∼(沒 分隔符號的 CSV ==> 那不就是亂七八糟的 Data) 不過這倒是劣者沒注意到的問題,所以再 SPLIT 之前最好先 用 INSTR 檢查一下字串中有沒有這個 SPLIT 函式的第二個參數(=分隔字元),再做 SPLIT ,不然會不知道怎麼回事∼∼ :dcft689kj |
啊,我沒有說清楚..
早上驗證程式的時候,人家丟出來的雖然是同一個CVS檔 不過有趣的是,對方給我的是用CHR(10)作分隔,而自己的呢,卻是使用分行符號當資料的分隔 害我在那邊瞧了老半天,程式明明沒有問題.. 後來再查去CVS才曉得這個烏龍.. 害我一進門就被人理直氣壯的叫去DEBUG..真是讓人哭笑不得 :dcft689kj |
所有時間均為台北時間。現在的時間是 04:28 AM。 |
Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.
『服務條款』
* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *