步驟:1 連excel(自己知道其格式,最好是沒個字段在資料一一對應)
2 讀excel資料,填入到資料庫
我這裡有個函式,實現把excel**中資料匯入資料庫,在一條資料匯入前判斷資料庫中是否有該資料,如果有,就不再匯入該資料(避免重複)
,你可以參考下
procedure tform_qyxxcx.bitbtn2click(sender: tobject);
var i,j:integer;
col,row:integer;
m***cel,wbook,wsheet:olevariant;
f_temp,strtemp:string;
begin
if main_form.lwt.message_confirm('為預防不可**情況發生(欄位太長、型別不一致等)'+#10#13+'強烈建議在匯入前備份原來資料,'+#10#13+'確認:終止匯入'+#10#13+'取消:繼續匯入') then
abort;
cdsdjzy.open;
cdsdjzy.first;
while not cdsdjzy.eof do
cdsdjzy.delete;
cdsdjzy.close;
cdsdjzy.open;
trybegin
if opendialog1.execute then //關聯到檔案
begin
if opendialog1.filename='' then
abort;
wbook.workbooks.open(opendialog1.filename);
end;
wbook.visible:= true;
wsheet:=wbook.worksheets[1];
endexcept
begin
abort;
end;
end;
row:=wsheet.usedrange.rows.count; //行
col:=wsheet.usedrange.columns.count; //列
if (row=0) or (col = 0) then
begin
showmessage('該excel檔案沒有資料!請確認');
abort;
end;
proform.show;
proform.progressbar1.max:=row;
with qqyb do
begin
open;
for i:=1 to row-1 do //要增加的行數
begin // 0 人員名稱 2 企業名稱
//判斷是否存在該企業和人員,如果存在,不匯入該記錄
strtemp:='select * from qyb where qy_name = '''+wsheet.cells[i+1,1].value+'''';
main_form.lwt.db_adoqueryrun(qupdate,strtemp);
if qupdate.recordcount<>0 then // 存在,加入臨時表 ,退出本次迴圈
begin
cdsdjzy.fieldbyname('企業名稱').asstring := wsheet.cells[i+1,1].value;
cdsdjzy.post;
continue;
end;
for j:=0 to col-1 do //列
begin
proform.progressbar1.position:=proform.progressbar1.position+1;
// if adory.fields[j].fieldkind
fields[j].value:= wsheet.cells[i+1,j+1].value;
end;
post;
end;
end;
proform.progressbar1.position:=0;
proform.hide;
if cdsdjzy.recordcount>1 then
begin
if main_form.lwt.message_confirm('資料已經匯入!,部分記錄因為已經存在,沒有匯入,是否列印沒有匯入記錄的請單?') then
begin
main_form.lwt.db_showreportbydataset(cdsdjzy,'因為已經存在該企業匯入失敗的資訊');
main_form.lwt.db_excel_export(cdsdjzy,'c:\hello.xls');
end;
endelse
begin
main_form.lwt.message_show('資料已經匯入!');
end;
wbook.workbooks.close;
end;
Delphi Excel匯入 的通用程式
procedure tform1.btnclick sender tobject begin opendialog1.title 請選擇正確的excel檔案 opendialog1.filter excel xls xls if opendialog1.execute then edit1.text...
通血管的古方,不管多嚴重都能通!
據 報導,一位居住在倫敦的人的親身經歷,他去巴基斯坦開會的時候,突然胸口劇痛,後來被醫院驗出來,他的三條心血管已經被嚴重堵塞,需要做搭橋手術。手術的時間是乙個月以後,在這個期間,他去看一位回教國家古法 師。這位 hakim讓他自己在家中做乙個食療,他吃了乙個月。乙個月後他去同一家醫院做檢查,發現三條...
匯入模組與匯入函式的不同
背景 目前的各種語言為了使 段變得清晰易懂,將 經過拆分成多個模組,每個模組可以包含多個函式 定義非絕對,換言之,模組可以看出函式的集合體,同時模組本身也是一種函式 那麼各個模組如何相關關聯使用呢?下面通過一些例項講述一下函式的匯入功能。import 模組 eg1 定義匯入的模組為imp modul...