打印

delphi 讀取 CSV 透過 OLE DB

delphi 讀取 CSV 透過 OLE DB

1.先拉一個 OpenDialog1 , ADOConnection1 , ADOQuery1

2.拉一個 Button1 把事件寫在按鈕按下去的時候


% B: P4 r) G+ y& `

複製內容到剪貼板
代碼:
procedure TForm1.Button1Click(Sender: TObject);
begin

OpenDialog1.Execute;
if OpenDialog1.FileName <> '' then
begin

ADOConnection1.ConnectionString :=
'Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Text;HDR=YES;FMT=Delimited;CharacterSet=ANSI"ersist Security Info=False;'

+'Data Source='+ExtractFilePath(OpenDialog1.FileName) ;

ADOQuery1.SQL.Text := 'Select * from '+ ExtractFileName (OpenDialog1.FileName) ;
ADOQuery1.Open ;

end;

end;

4 P/ `9 ~6 n0 I. W4 |3 P  r

這時候可以把讀出來的資料丟到 DBgrid 上顯示

但是會發現某些欄位是空白的 o_Oa

上網查一下 , 大概知道啥情況了


7 T9 v; W3 B; o2 N0 c- z$ Z, N, g

csv檔個標準' ~2 R7 \" c5 z! e1 p" |' ?
應該是如果該欄為文字型態,用""6 h0 c8 J8 M/ y; \7 ^4 d3 {
如果為數字型態,就直接顯示
( T6 ~$ d+ u: m% u/ a$ g並且第一列為Title , 所以底下的 a2 會被當作數值 ,  t12 就會被變成空白顯示 lol6 o9 a3 a: B# q+ G

複製內容到剪貼板
代碼:

"a1","a2","a3","a4"
"abc",123,"4,567","def"
"11",t12,"13","14"
"abc",123,"3,456","123"


. X/ R. u+ F+ m# W" J" E  p1 ~9 Z

看是要手動改掉 csv 還是另外寫程式加上  "" 吧

TOP

發新話題