如何加excel資料copy到dbgrid |
答題得分者是:hagar
|
fivker
一般會員 發表:24 回覆:38 積分:12 註冊:2006-12-05 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
fivker
一般會員 發表:24 回覆:38 積分:12 註冊:2006-12-05 發送簡訊給我 |
===================引 用 文 章=================== 參考: http://delphi.ktop.com.tw/board.php?cid=31&fid=79&tid=39658 http://delphi.ktop.com.tw/board.php?cid=31&fid=79&tid=39642 ================================================= 感謝樓上hagar大大的資料,目前遇到一個問題。 範例中的TString有使用到 Delimiter 這個功能, 但是因為我使用的是Delphi 5似乎並沒有這個功能, 請問是否有其他方式可以解決TAB字元。THANKS ===========原始程式片段 作者:hagar ================= //執行貼上 procedure TForm1.PasteClipboardToDBGrid; var sl1, sl2: TStringList; i, j,iCol: integer; begin if Clipboard.HasFormat(CF_Text) then begin sl1 := TStringList.Create; sl2 := TStringList.Create; try sl1.Text := Clipboard.AsText; for i := 0 to sl1.Count -1 do begin AT2.Append; sl2.Clear; sl2.Delimiter := #9; sl2.DelimitedText := sl1.Strings[i]; iCol := 0; for j := 0 to sl2.Count -1 do begin AT2.Fields[icol].Text:= sl2.Strings[j]; Inc(iCol); end; AT2.Post; end; finally sl2.Free; sl1.Free; end; end; AQ2.SQL.Clear; AQ2.SQL.Add('select * from DataStock2'); AQ2.Close; AQ2.open; end; |
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
fivker
一般會員 發表:24 回覆:38 積分:12 註冊:2006-12-05 發送簡訊給我 |
感謝hagar大大的指導。我利用了pos跟copy的功能來取代Delimiter 的功能。
(delphi新手,有的地方改的不好,應該有更好的寫法,因為我貼超過1000筆的資料就會跑的有點久了 XD) 程式如下: procedure TForm1.PasteClipboardToDBGrid; var sl1, sl2: TStringList; i, j,iCol,x: integer; ss1:string; m, iPos: integer; sTmp: string; begin if Clipboard.HasFormat(CF_Text) then begin sl1 := TStringList.Create; sl2 := TStringList.Create; AT2.Active:=TRUE; try sl1.Text := Clipboard.AsText; for i := 0 to sl1.Count -1 do begin iCol := 0; AQ2.Close; AT2.Append; sl2.Clear; sl2.text:= sl1.Strings[i]; //計算tab個數,#9表示tab鍵 sTmp := sl2.Text; iPos := Pos(#9,sTmp); m := 0; while iPos <> 0 do begin Inc(m); Delete(sTmp, iPos, Length(#9)); iPos := Pos(#9, sTmp); end; for j:=0 to m do begin X:=pos(#9,sl2.text); if X<>0 then begin ss1 := Copy(sl2.text, 1, x-1); sl2.text := COPY(sl2.text,x 1,LENGTH(sl2.text)-x); end else ss1 := sl2.text; If (Pos(#9,ss1)<0) then begin break; end else begin AT2.Fields[icol].Text:= ss1; Inc(iCol); end; end; end; AT2.Post; finally sl2.Free; sl1.Free; end; end; AQ2.SQL.Clear; AQ2.SQL.Add('select * from DataStock2'); AQ2.Close; AQ2.open; end; 另外,不曉得有沒有人跟我一樣,使用DELPHI 5,開啟hagar大哥的程式時, 有些表單的CAPTION 會變成怪怪的字。使得程式無法使用。 EX:BUTTON1.CAPTION 變成 #1928520 之類的。 需要先開啟 .DFM檔,將其中的字碼改回成中文,就可以使用了。 (試了好久才找出不能開啟的原因 ^^|||||) |
fivker
一般會員 發表:24 回覆:38 積分:12 註冊:2006-12-05 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
fivker
一般會員 發表:24 回覆:38 積分:12 註冊:2006-12-05 發送簡訊給我 |
===================引 用 文 章=================== 1.那個不是我的程式, 是 shelin 的 :) 2.那個程式是用 Delphi 7 寫的吧, 所以 Caption 的部份會用 unicode 型態, 所以會看到 #12570 之類的字樣 3.把字串 insert 到數字型態的欄位不是一樣會是數字型態, 如果字串的內容都是可以轉成數字型態的話 先向shelin大說聲抱歉,真是不好意思。一時不察。 我之後測試幾次,但是嘗試寫入數字欄位還是會出錯。所以後來改用別的方法。: ) 再次謝謝hagar大的指點。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |