全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:4627
推到 Plurk!
推到 Facebook!

ADO讀取CSV檔

答題得分者是:sryang
small7011
一般會員


發表:19
回覆:34
積分:10
註冊:2007-07-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2012-02-06 17:13:03 IP:211.72.xxx.xxx 訂閱
我想要利用ADO去讀取EXCEL檔將資料顯示在Stringgrid元件上,結果xls格式沒有問題,但是csv格式會顯示"外部資料表布市預期格式"的錯誤,麻煩有各位幫我解答,謝謝

[code cpp]
void __fastcall TForm1::Button2Click(TObject *Sender)
{
AnsiString asFile,as;
if (OpenDialog1->Execute())
{
asFile=OpenDialog1->FileName;
as=
"Provider=Microsoft.Jet.OLEDB.4.0;"
"Data Source=D:\BOOK.csv;"
"Extended Properties=EXCEL 8.0;HDR=No;IMEX=1;"
"Persist Security Info=False;"

"Jet OLEDB:System database="";"
"Jet OLEDB:Registry Path="";"
"Jet OLEDB:Database Password="";"
"Jet OLEDB:Engine Type=35;"
"Jet OLEDB:Database Locking Mode=0;"
"Jet OLEDB:Global Partial Bulk Ops=2;"
"Jet OLEDB:Global Bulk Transactions=1;"
"Jet OLEDB:New Database Password="";"
"Jet OLEDB:Create System Database=False;"
"Jet OLEDB:Encrypt Database=False;"
"Jet OLEDB:Don't Copy Locale on Compact=False;"
"Jet OLEDB:Compact Without Replica Repair=False;"
"Jet OLEDB:SFP=False"
;

ADOConnection1->ConnectionString=as;
ADOConnection1->LoginPrompt=false;
ADOQuery1->Connection=ADOConnection1;
ADOQuery1->Close();
ADOQuery1->SQL-> Clear() ;
ADOQuery1->SQL-> Add("select * from [BOOK$]");
ADOQuery1->Open();
ADOQuery1->First();

StringGrid1->RowCount=ADOQuery1->RecordCount;
StringGrid1->ColCount=ADOQuery1->FieldCount;

for(int i=0 ; iRecordCount;i )
{
for(int j=0 ; jFieldCount;j )
{
StringGrid1->Cells[j][i]=(AnsiString)ADOQuery1->Fields->Fields[j]->AsString;
}
ADOQuery1->Next();
}
ADOQuery1->Close();
}
}
[/code]

------
lee
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2012-02-06 23:45:12 IP:114.35.xxx.xxx 訂閱
CSV 本質是文字檔,Extended Properties 不能使用 "Excel 8.0"

Data Source 設定為 CSV 檔所在目錄
Extended Properties 設定為 "把 . 換成 #
例如 Book.csv 就是 "SELECT * FROM BOOK#CSV"

------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
small7011
一般會員


發表:19
回覆:34
積分:10
註冊:2007-07-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2012-02-07 10:26:32 IP:211.72.xxx.xxx 訂閱
謝謝sryang 大指導,修改後已經可以讀取csv檔了.

[code cpp]
void __fastcall TForm1::Button2Click(TObject *Sender)
{
AnsiString asFile,as;
if (OpenDialog1->Execute())
{
asFile=OpenDialog1->FileName;
as=
"Provider=Microsoft.Jet.OLEDB.4.0;"
"Data Source=D:\;"
"Extended Properties=\"Text;HDR=No;IMEX=1;\";"
"Persist Security Info=False";
;

ADOConnection1->ConnectionString=as;
ADOConnection1->LoginPrompt=false;
ADOConnection1->Connected = true;

ADOQuery1->Connection=ADOConnection1;
ADOQuery1->Close();
ADOQuery1->SQL-> Clear() ;
ADOQuery1->SQL-> Add("SELECT * FROM [BOOK.CSV]");
ADOQuery1->Open();
ADOQuery1->First();

StringGrid1->RowCount=ADOQuery1->RecordCount;
StringGrid1->ColCount=ADOQuery1->FieldCount;

for(int i=0 ; iRecordCount;i )
{
for(int j=0 ; jFieldCount;j )
{
StringGrid1->Cells[j][i]=(AnsiString)ADOQuery1->Fields->Fields[j]->AsString;
}
ADOQuery1->Next();
}
ADOQuery1->Close();
}
}
[/code]

===================引 用 sryang 文 章===================
CSV 本質是文字檔,Extended Properties 不能使用 "Excel 8.0"

DataSource 設定為 CSV 檔所在目錄
ExtendedProperties 設定為 "把 . 換成 #
例如 Book.csv 就是 "SELECT * FROM BOOK#CSV"


------
lee
系統時間:2024-03-29 5:09:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!