请高手帮忙-将dbgrid内的全部数据复制到剪切板,然后打开EXCEL,在粘贴到里面!

wm_zz 2005-09-09 01:55:30
将dbgrid内的全部数据复制到剪切板,然后打开EXCEL,在粘贴到里面!

万分感谢!(最好能给一些代码事例)
...全文
347 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gxgyj 2005-09-09
  • 打赏
  • 举报
回复
/////////////////////////////////////////////
利用剪贴板,速度很快!适合装有Excel的机器
USES Clipbrd,ComObj;

procedure TForm1.Button1Click(Sender: TObject);
var
str:string;
i:Integer;
excelapp,sheet:Variant;
begin
// lbl2.Caption:=DateTimeToStr(Now);
str:='';
dbgrd1.DataSource.DataSet.DisableControls;
for i:=0 to dbgrd1.DataSource.DataSet.FieldCount-1 do
str:=str+dbgrd1.DataSource.DataSet.fields[i].DisplayLabel+char(9);
str:=str+#13;
dbgrd1.DataSource.DataSet.First;
while not(dbgrd1.DataSource.DataSet.eof) do begin
for i:=0 to dbgrd1.DataSource.DataSet.FieldCount-1 do
str:=str+dbgrd1.DataSource.DataSet.Fields[i].AsString+char(9);
str:=str+#13;
dbgrd1.DataSource.DataSet.next;

lbl1.Caption:=IntToStr(dbgrd1.DataSource.DataSet.RecNo);
Application.ProcessMessages;

end;//end while

dbgrd1.DataSource.DataSet.EnableControls;

clipboard.Clear;
Clipboard.Open;
Clipboard.AsText:=str;
Clipboard.Close;
excelapp:=createoleobject('excel.application');
excelapp.workbooks.add(1); // excelapp.workbooks.add(-4167);
sheet:=excelapp.workbooks[1].worksheets[1];
sheet.name:='sheet1';
sheet.paste;
Clipboard.Clear;
// sheet.columns.font.Name:='宋体';
// sheet.columns.font.size:=9;
// sheet.Columns.AutoFit;
excelapp.visible:=true;
// lbl3.Caption:=DateTimeToStr(Now);

end;

/////////////////////////////////////////////

wintergoes 2005-09-09
  • 打赏
  • 举报
回复
这是一个把LISTVIEW数据导到EXCEL的代码

uses ComObj


procedure TfrmSearch.BitBtn5Click(Sender: TObject);
var
ExcelApp:Variant;
Sheet:Variant;
i,j:integer;
lstItem:TListItem;
begin
j:=0;

ExcelApp:=CreateOleObject('Excel.Application'); //创建EXCEL
ExcelApp.Caption:='查询结果'; //标题
ExcelApp.Visible:=true; //显示
Sheet:=ExcelApp.WorkBooks.Add; //添加工作薄
ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True; //显示打印线
ExcelApp.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035; //水平居中
ExcelApp.ActiveSheet.PageSetup.OrientaTion:=2; //纸张横向
ExcelApp.ActiveSheet.PageSetup.PaperSize:=12; //纸张大小

for i:=0 to lvResult.Columns.Count -1 do
begin
ExcelApp.Cells[1,i+1].Value:=lvResult.Columns[i].Caption ;
end;

for i:=0 to lvResult.Items.Count -1 do
begin
lstItem:=lvResult.Items [i];
ExcelApp.Cells[i+2,1].Value:=lstItem.Caption;


for j:=0 to LvResult.Columns.Count -2 do
begin
ExcelApp.Cells[i+2,j+2].Value:=lstItem.subitems[j];
end;
end;
end;

关于EXCEL中具体各数值代表什么样的值,再查些资料吧。

wintergoes 2005-09-09
  • 打赏
  • 举报
回复
干嘛复制到剪切板再粘过去啊,直接写进EXCEL去不行吗?

uses ComObj


procedure TfrmSearch.BitBtn5Click(Sender: TObject);
var
ExcelApp:Variant;
Sheet:Variant;
i,j:integer;
lstItem:TListItem;
begin
j:=0;

ExcelApp:=CreateOleObject('Excel.Application');
ExcelApp.Caption:='查询结果';
ExcelApp.Visible:=true;
Sheet:=ExcelApp.WorkBooks.Add;
ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True;
ExcelApp.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;
ExcelApp.ActiveSheet.PageSetup.OrientaTion:=2;
ExcelApp.ActiveSheet.PageSetup.PaperSize:=12;

for i:=0 to lvResult.Columns.Count -1 do
begin
ExcelApp.Cells[1,i+1].Value:=lvResult.Columns[i].Caption ;
end;

for i:=0 to lvResult.Items.Count -1 do
begin
lstItem:=lvResult.Items [i];
ExcelApp.Cells[i+2,1].Value:=lstItem.Caption;


for j:=0 to LvResult.Columns.Count -2 do
begin
ExcelApp.Cells[i+2,j+2].Value:=lstItem.subitems[j];
end;
end;
end;

hqhhh 2005-09-09
  • 打赏
  • 举报
回复
设置geaCopyEh属性为True即可!
hqhhh 2005-09-09
  • 打赏
  • 举报
回复
DBGridEh控件有这个功能!

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧