前台:delphi7.0,是一个简单的程序,对数据实现排序汇总。
后台:access,数据表为data,包含6个字段,分别为a,b,c,d,e,f.
现在想要将DBGrid1中显示的数据导入到excel中,不知道语句怎么写,请大家帮忙?谢谢!!
后台:access,数据表为data,包含6个字段,分别为a,b,c,d,e,f.
现在想要将DBGrid1中显示的数据导入到excel中,不知道语句怎么写,请大家帮忙?谢谢!!
具体方法请搜以前帖子
//use comobj ,要放一个savedialog
procedure TRemind_F.Btn1Click(Sender: TObject);
var
excelApp,WorkBook:olevariant;
xlsFileName:string;
i,j:integer;
begin
if dlgSave1.Execute then
begin
xlsFileName:=dlgSave1.FileName;
end else
begin
Exit;
end; try
excelApp:=CreateOleObject('Excel.Application');
WorkBook:=CreateOleObject('Excel.Sheet');
except
Application.MessageBox('系统没有安装Microsoft Excel','Microsoft Excel',MB_OK+MB_ICONWarning);
Exit;
end; try
//列名,字段名
WorkBook:=excelApp.workbooks.Add;
for i:=0 to dbg1.Columns.Count-1 do
begin
excelApp.Cells(1,i+1):=dbg1.Columns[i].Title.Caption;
end; dbg1.DataSource.DataSet.First;
j:=2;
while not dbg1.DataSource.DataSet.Eof do
begin
for i:=0 to dbg1.Columns.Count-1 do
begin
excelApp.Cells(j,i+1):=dbg1.Fields[i].Value;
end;
dbg1.DataSource.DataSet.Next;
inc(j);
end; WorkBook.SaveAS(xlsFileName);
WorkBook.close;
except
ShowMessage('文件导出失败!');
Exit;
end;
Application.MessageBox('保存成功!','恭喜',MB_OK + MB_ICONINFORMATION);
end;
二:用第三方控件,如Ehlib,dev express
事件中
procedure TfrmDaGongYiZhiZuo.cxButton5Click(Sender: TObject);
var
filename:string;
begin
if SaveDialog1.Execute then
begin
filename:=SaveDialog1.FileName;
ExportGridToExcel(filename,cxGrid2,True,True,True,'xls');
showmessage('数据导出成功!');
end;
end;
你这个好像要装cxGrid吧。
var
myexcel: Variant;
workbook: olevariant;
worksheet: olevariant;
i, j, n, t: Integer;
SaveDialog: TSaveDialog;
xlsFileName: string;
begin
if not DBGridName.DataSource.DataSet.Active then Exit;
SaveDialog := TSaveDialog.Create(Application);
SaveDialog.DefaultExt := '.xls';
SaveDialog.Filter := 'Excel文件|*.xls|所有文件|*.*';
if SaveDialog.Execute then
begin
xlsFileName := SaveDialog.FileName;
//xlsFileName := 'apws.xls';
try
try
myexcel := createoleobject('excel.application'); //
myexcel.application.workbooks.add;
myexcel.caption := '批发市场导出数据';
workbook := myexcel.application.workbooks[1];
worksheet := workbook.worksheets.item[1];
except
showmessage('不能建立 EXCEL !' + #13#10 + '请检查是否已经安装了 excell.');
abort;
exit;
end;
i := 1;
j := 1;
for n := 0 to DBGridName.FieldCount - 1 do
begin
if DBGridName.Columns[n].Visible then
begin
worksheet.cells(i, j) := DBGridName.Columns[n].Title.Caption;
j := j + 1;
end;
end;
with DBGridName.DataSource.DataSet do
begin
First;
while not Eof do
begin
inc(i);
n := 0;
for j := 0 to DBGridName.FieldCount - 1 do
begin
if DBGridName.Columns[j].Visible then
begin
t := j - n;
if isNumericEx(fieldbyname(DBGridName.Fields[j].FieldName).AsString) then
worksheet.cells[i, t + 1] := '''' + (fieldbyname(DBGridName.Fields[j].FieldName).AsString)
else
worksheet.cells[i, t + 1] := (fieldbyname(DBGridName.Fields[j].FieldName).AsString);
end
else
inc(n);
end;
Next;
end;
end;
if FileExists(xlsFileName) then
begin
if Application.MessageBox('文件已经存在!' + #13 + #10 + '是否确定进行替换?' + #13 + #10 + #13 + #10 +
'若选择"取消",则将在当前目录中' + #13 + #10 +
'生成名为apwstemp.xls的临时文件', '提示', MB_OKCANCEL +
MB_ICONQUESTION + MB_SYSTEMMODAL) = IDOK then
begin
DeleteFile(PChar(xlsFileName));
workbook.SaveAs(xlsFileName);
workbook.Close;
myexcel.Quit;
myexcel := Unassigned;
end
else
begin
if FileExists(PChar(ExtractFileDir(xlsFileName) + '\' + 'apwstemp.xls')) then
begin
DeleteFile(PChar(ExtractFileDir(xlsFileName) + '\' + 'apwstemp.xls'));
end;
WorkBook.SaveAs(ExtractFileDir(xlsFileName) + '\' + 'apwstemp.xls');
WorkBook.Close;
myexcel.Quit;
myexcel := Unassigned;
end;
end
else
begin
WorkBook.SaveAs(xlsFileName);
WorkBook.Close;
myexcel.Quit;
myexcel := Unassigned;
end;
except
Application.MessageBox('不能正确操作Excel文件!' + #13 + #10 + #13 + #10 + '可能是該文件已被其他程序打开, 或系統错误',
'警告', MB_OK + MB_ICONSTOP + MB_SYSTEMMODAL);
WorkBook.Close;
myexcel.Quit;
myexcel := Unassigned;
end;
end;
end;
我以前就是这样引用的>>>>>>>>>>>>>>>>>>>>>