如何取出excel中的值 |
尚未結案
|
vengeance
一般會員 發表:9 回覆:11 積分:4 註冊:2004-05-31 發送簡訊給我 |
|
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
vengeance:建議使用ADO元件; Form1放一ADOConnection,ADOQuery。OpenDialog 範例: ADO1->Active=false; ADOConnection1->Connected=false; AnsiString S,SLine_File; S="provider=Microsoft.Jet.OLEDB.4.0;Data Source=" OpenDialog1->FileName ";Extended Properties=Excel 8.0;Persist Security Info=False"; ADOConnection1->Provider="Microsoft.Jet.OLEDB.4.0"; ADOConnection1->ConnectionString=S; ADOConnection1->Connected=true; //下面為讀取Excel工作表名稱 ADOConnection1->GetTableNames(Memo1->Lines,false); for (int j = 0; j < Memo1->Lines->Count ; j ) { S=Memo1->Lines->Strings[j]; if (S.Pos("$_") == 0) { ListBox1->Items->Add(S.SubString(1,S.Pos("$")-1)); } } //取第一個工作表 SLine_File=ListBox1->Items->Strings[0]; ADO1->CommandText="select * from [" SLine_File "$]"; ADO1->CommandType=cmdUnknown; try { ADO1->Active=true; } catch(...) { ADO1->Active=false; ADOConnection1->Connected=false; } int a[1024],i; for (i=0;i<1024;i ) { a[i]=0; } int F=6; // 這是你定義的F // 若你定義的F大於讀入的FieldCount if (F > ADO1->FieldCount) F=ADO1->FieldCount; AnsiString buffer; i=0; ADO1->First(); while ( ! ADO1->Eof && i < 1024) { buffer=ADO1->Fields->Fields[i]->DisplayText.Trim() a[i]=StrToIntDef(buffer,0); // 保證你Excel讀入的值一定為整數,此為防Excel值為空白或為其他值。 Application->ProcessMessages(); ADO1->Next(); i ; } 請參考!Andy Chang
------
Andy Chang |
vengeance
一般會員 發表:9 回覆:11 積分:4 註冊:2004-05-31 發送簡訊給我 |
andychang1690兄 你好
//取第一個工作表
SLine_File=ListBox1->Items->Strings[0]; ADO1->CommandText="select * from [" SLine_File "$]"; ADO1->CommandType=cmdUnknown; try { ADO1->Active=true; } catch(...) { ADO1->Active=false; ADOConnection1->Connected=false; } int a[1024],i; for (i=0;i<1024;i ) { a[i]=0; }執行上面紅色兩行會發生錯誤 [C Error] Unit1.cpp(43): E2247 'TCustomADODataSet::CommandText' is not accessible WHY? 還有你的ADO1是ADOQuery1嗎? 謝謝 一年當五年用 發表人 - vengeance 於 2005/05/30 17:20:15
------
一年當五年用 |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
|
vengeance
一般會員 發表:9 回覆:11 積分:4 註冊:2004-05-31 發送簡訊給我 |
void __fastcall TForm1::Button1Click(TObject *Sender) { if(OpenDialog1->Execute()) { ADOQuery1->Active=false; ADOConnection1->Connected=false; AnsiString S,SLine_File; S="provider=Microsoft.Jet.OLEDB.4.0;Data Source=" OpenDialog1->FileName ";Extended Properties=Excel 8.0;Persist Security Info=False"; ADOConnection1->Provider="Microsoft.Jet.OLEDB.4.0"; ADOConnection1->ConnectionString=S; ADOConnection1->Connected=true; ///下面為讀取Excel工作表名稱 ADOConnection1->GetTableNames(Memo1->Lines,false); for (int j = 0; j < Memo1->Lines->Count ; j ) { S=Memo1->Lines->Strings[j]; if (S.Pos("$_") == 0) { ListBox1->Items->Add(S.SubString(1,S.Pos("$")-1)); } } //取第一個工作表 SLine_File=ListBox1->Items->Strings[1]; RichEdit1->Lines->Add(SLine_File); ADOQuery1->CommandText="select * from [" SLine_File "$]"; ADOQuery1->CommandType=cmdUnknown; try { ADOQuery1->Active=true; } catch(...) { ADOQuery1->Active=false; ADOConnection1->Connected=false; }ADOQuery好像沒有CommandType和CommandText這兩個函式 一年當五年用
------
一年當五年用 |
vengeance
一般會員 發表:9 回覆:11 積分:4 註冊:2004-05-31 發送簡訊給我 |
ADO1->CommandText="select * from [" SLine_File "$]"; ADO1->CommandType=cmdUnknown; 替換成 ADOQuery1->Connection = ADOConnection1; ADOQuery1->Close(); ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add("select * from [" SLine_File "$]"); ADOQuery1->Open();就可以用了 謝謝andychang1690兄 一年當五年用
------
一年當五年用 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |