我用ADO+SQL.如果只是将SQL的结果拷到EXCEL或升成EXCEL文件,用SQL语句就行了。
但我想要的是,将DBGrideh进行全选后,将内容复制并拷贝到EXCEL中。
已经进行过搜索,但没有找到结果。
有朋友的回答过可用DBGrideh的有关功能进行。但到底怎样做?
还请明示。
通过马上结贴。
但我想要的是,将DBGrideh进行全选后,将内容复制并拷贝到EXCEL中。
已经进行过搜索,但没有找到结果。
有朋友的回答过可用DBGrideh的有关功能进行。但到底怎样做?
还请明示。
通过马上结贴。
{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
MSExcel:Variant;
i,j:integer;
begin
SaveDialog1.Filter:='*.XLS|*.XLS';
SaveDialog1.DefaultExt:='XLS';
if SaveDialog1.Execute then
begin
MsExcel:=createOLEobject('excel.application');
MsExcel.workBooks.add;
Msexcel.visible:=false;
with DataSource1.Dataset do
begin
first;
for i:=0 to dbgrid.SelectedRows.Count-1 do //选择dbgd的内容
begin
GotoBook(pointer(SelectedRows.Items[i]));//放到dataset中
Msexcel.cells[1,i+1].value:=fields[i].DisplayLabel ;
end;
j:=2;
while not eof do
begin
for i:=0 to dbgrid.SelectedRows.Count-1 do
begin
GotoBook(pointer(SelectedRows.Items[i]));
Msexcel.cells[j,i+1].numberformat:='@';
Msexcel.cells[j,i+1].value:=fields[i].AsString ;
end;
inc(j);
next;
end;
end;
MSExcel.ActiveWorkBook.SaveAs(SaveDialog1.FileName);
MSExcel.ActiveWorkBook.Saved:=True;
MSExcel.Quit;
end;
end;
导出是生成一个EXCEL文件,复制后粘贴则是很方便的操作。这对初学的人很有用。
2,把GBgrideh的multiselect设置成true
2.在event(你要用的命令按纽等)里写上:
DBGridEh_DoCopyAction(DBGridEh1,False);
就可以进行复制了; 打开Excel可以直接粘贴在工作溥里.当然,如果要直接生成文件,Workers的方法也是一种好方法.
var
range:excelrange;
i,j:integer;
letter:char;
begin
if messagedlg('是否把差生内容导入到Excel?',mtconfirmation,[mbyes,mbno],0)=mryes then
try
try
excelapplication1.Connect;
except
showmessage('您的机器没有安装Excel!');
abort;
end;
excelapplication1.Visible[0]:=true;
excelapplication1.Caption:='查询分析内容';
excelapplication1.Workbooks.Add(NUll,0); i:=65+datasource1.DataSet.FieldCount-1;
letter:=char(i); range:=excelapplication1.Range['A1',letter+'1']; for i:=0 to datasource1.DataSet.FieldCount-1 do
begin
range.Value:=datasource1.DataSet.Fields[i].DisplayLabel;
range:=range.Next;
end; datasource1.DataSet.First; for i:=1 to datasource1.DataSet.RecordCount do begin
range:=excelapplication1.Range['A'+inttostr(i+1),letter+inttostr(i+1)];
for j:=0 to datasource1.DataSet.FieldCount-1 do begin
if not datasource1.DataSet.Fields[j].IsBlob then
range.Value:=datasource1.DataSet.Fields[j].AsString
else range.Value:='不支持图片显示';
range:=range.Next;
end;
datasource1.DataSet.Next;
end; except
excelapplication1.Disconnect;
end;
end;
DBGridEhImpExp;
procedure TForm1.Button1Click(Sender: TObject);
begin
SaveDBGridEhToExportFile(TDBGridEhExportAsXLS, DBGridEh1, 'c:\temp\file1.xls',
True);
end;