
想要實作點擊按鈕1,ID1 姓名張三的資訊保存到excel表中,點擊按鈕2,ID2姓名李四的資訊保存到同一張表中同時不覆寫上一個資訊(張三的) 求代碼
uj5u.com熱心網友回復:
為什么沒有人 回答我啊uj5u.com熱心網友回復:
因為你的問題太基礎。而且,涉及代碼多。方法(方式)也很多。uj5u.com熱心網友回復:
有沒有什么簡單的方法? 因為急用所以需要簡單的,便捷的
uj5u.com熱心網友回復:
var
y:integer;
tsList:TStringList;
s,filename:string;
aSheet:variant;
xl:OleVariant;
savedialog:TSaveDialog;
begin
Result:=true;
try
xl:=CreateOleObject('Excel.Application');
xl.workbooks.add;
except
showmessage('無法呼叫excel');
exit;
end;
savedialog:=TSaveDialog.Create(nil);
savedialog.FileName:=sfilename;
savedialog.Filter:='Excel檔案(*.xlsx)|*.xlsx';
if savedialog.Execute then
begin
if FileExists(savedialog.FileName) then
try
if messagebox(handle,'該檔案已經存在是否要覆寫','提示',MB_YESNO)=IDYES then
deletefile(PChar(savedialog.FileName))
else
begin
xl.quit;
savedialog.Free;
Exit;
end;
except
xl.quit;
savedialog.Free;
screen.Cursor:=crDefault;
Exit;
end;
filename:=savedialog.FileName;
end;
savedialog.Free;
if filename='' then
begin
Result:=true;
xl.quit;
Exit;
end;
aSheet:=xl.WorkSheets.Item[1];
tsList:=TStringList.Create;
s:='';
for y:=0 to ADOQuery1.FieldCount-1 do
begin
s:=s+adoquery1.fields.fields[y].FieldName+#9;
Application.ProcessMessages;
end;
tsList.Add(s);
try
try
ADOQuery1.First;
while not ADOQuery1.Eof do
begin
s:='';
for y:=0 to ADOQuery1.FieldCount-1 do
begin
s:=s+ADOQuery1.Fields[y].AsString+#9;
Application.ProcessMessages;
end;
tsList.Add(s);
ADOQuery1.Next;
end;
Clipboard.AsText:=tsList.Text;
except
Result:=false;
end;
finally
tsList.Free;
end;
aSheet.paste;
messagebox(handle,'資料匯出完畢','提示',MB_YESNO);
try
if copy(FileName,length(FileName)-4,4)<>'.xlsx' then
FileName:=FileName+'.xlsx';
xl.ActiveWorkBook.SaveAs(FileName);
except
xl.quit;
screen.Cursor:=crDefault;
Exit;
end;
xl.visible:=false;
xl.quit;
xl:=UnAssigned;
end;
uj5u.com熱心網友回復:
上面的代碼只能把你dbgrid表里的所有資料保存在excel中轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/91747.html
標籤:語言基礎/算法/系統設計
上一篇:幫忙修改下程式
