Delphi中将数据导入到Excel中的问题 Delphi里,把数据导入到Excel中,希望点击按钮会出现一个“另存为”的对话框,用代码如何实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 前题ADOQUERY控件的SQL句 select x_a as 工号,x_b 姓名,x_c 部门 from x_eng 加入AS是为了标题显示中文}usesComObj//方法:procedure TForm1.DataSetToExcel(ADataSet: TCustomADODataSet; const AFileName: string);var Table, ExcelApp, ExcelBook, ExcelSheet: Variant;begin if not ADataSet.Active then Exit; ExcelApp := CreateOleObject('Excel.Application'); ExcelApp.DisplayAlerts := False; ExcelBook := ExcelApp.WorkBooks.Add; ExcelSheet := ExcelBook.Sheets.Item[1]; Table := ExcelSheet.QueryTables.Add(ADataSet.Recordset, ExcelSheet.Range['A1']); Table.Refresh(True); ExcelBook.Close(True, AFileName);end;//调用procedure TForm1.Button1Click(Sender: TObject);begin if SaveDialog1.Execute then begin DataSetToExcel(ADOquery1, SaveDialog1.FileName); end;end; 另:SaveDialog1.DefaultExt:='xls';SaveDialog1.Filter:='*.xls|*.xls'; 全代码:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons,ComObj,DB, ADODB;type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Label1: TLabel; SaveDialog1: TSaveDialog; BitBtn1: TBitBtn; ADOQuery1: TADOQuery; ADOConnection1: TADOConnection; procedure BitBtn1Click(Sender: TObject); private { Private declarations } public { Public declarations } procedure DataSetToExcel(ADataSet: TCustomADODataSet;//声明 const AFileName: string); end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.DataSetToExcel(ADataSet: TCustomADODataSet; const AFileName: string);var Table, ExcelApp, ExcelBook, ExcelSheet: Variant;begin {定义} if not ADataSet.Active then Exit; ExcelApp := CreateOleObject('Excel.Application'); ExcelApp.DisplayAlerts := False; ExcelBook := ExcelApp.WorkBooks.Add; ExcelSheet := ExcelBook.Sheets.Item[1]; Table := ExcelSheet.QueryTables.Add(ADataSet.Recordset, ExcelSheet.Range['A1']); Table.Refresh(True); ExcelBook.Close(True, AFileName);end;procedure TForm1.BitBtn1Click(Sender: TObject);begin{调用}SaveDialog1.DefaultExt:='xls';SaveDialog1.Filter:='*.xls|*.xls';if SaveDialog1.Execute then begin DataSetToExcel(ADOquery1, SaveDialog1.FileName); end;end;end. 记住要加一个SaveDialog控件,在delphi控件页dialogs这个页面 基本按照你的第二种说法做了,可是出现一个很奇怪的问题,无论我把文件设置保存在哪个目录下,程序运行结果都是默认保存到“我的文档”里,为什么?还有,为什么是ExcelBook.Close(True, AFileName),而不是ExcelBook.Close; 问题一:1.出现选择文件名及路径选择,你可以选择要保存的位置.2:expression.Close(SaveChanges, Filename, RouteWorkbook)expression 必需。该表达式返回上述对象之一。SaveChanges Variant 类型,可选。如果工作簿没有改变,则忽略此参数;如果工作簿发生了改变并且在另外的窗口中也打开了该工作簿,则仍然忽略此参数;如果工作簿发生了改变并且没有在另外的窗口中打开,则此参数将指定是否在工作簿中保存所发生的更改。取值与操作如下表所示:值作用True将改变保存到工作簿。如果该工作簿尚未命名,则使用 FileName 指定的名称。如果省略 FileName 参数,则要求用户输入文件名。False不将改变保存到此文件。省略显示一个对话框,要求用户决定是否保存所做的更改。 FileName Variant 类型,可选。以此文件名保存所做的更改。RouteWorkbook Variant 类型,可选。如果指定工作簿不需要传送给下一个收件人(没有传送名单或已经传送),则忽略该参数。否则,Microsoft Excel 将按照下表所示处理传送。3.我用了这个方法已经还下三年有多了,一直都好正常的. 弱弱的问下,我是用delphi控件创建excel,不是动态创建的,方法一样吗? DELPHI 强制覆盖原文件 一个关于怎样防止access数据库自动增长大小的问题 请问高手?急!!!! 关于主细表的问题,谢谢! 大虾救命,access中怎样将整型转换成字符型? 怎样在程序中动态创建access表 关于程序的仿liveupdate升级设计 form2调用form1事件中的showmessage怎么处理? 打印的问题(在线等,信誉绝对) 将0到255的数字用16进制显示的问题 如何用memo直接打开网络上的文本文件? 如果我在局域网内广播一个消息,外网机器是否能够收得到呢?
前题ADOQUERY控件的SQL句 select x_a as 工号,x_b 姓名,x_c 部门 from x_eng 加入AS是为了标题显示中文}
uses
ComObj//方法:
procedure TForm1.DataSetToExcel(ADataSet: TCustomADODataSet;
const AFileName: string);
var
Table, ExcelApp, ExcelBook, ExcelSheet: Variant;
begin
if not ADataSet.Active then Exit;
ExcelApp := CreateOleObject('Excel.Application');
ExcelApp.DisplayAlerts := False;
ExcelBook := ExcelApp.WorkBooks.Add;
ExcelSheet := ExcelBook.Sheets.Item[1];
Table := ExcelSheet.QueryTables.Add(ADataSet.Recordset, ExcelSheet.Range['A1']);
Table.Refresh(True);
ExcelBook.Close(True, AFileName);
end;//调用
procedure TForm1.Button1Click(Sender: TObject);
begin
if SaveDialog1.Execute then begin
DataSetToExcel(ADOquery1, SaveDialog1.FileName);
end;
end;
SaveDialog1.Filter:='*.xls|*.xls';
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons,ComObj,DB, ADODB;type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
SaveDialog1: TSaveDialog;
BitBtn1: TBitBtn;
ADOQuery1: TADOQuery;
ADOConnection1: TADOConnection;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure DataSetToExcel(ADataSet: TCustomADODataSet;//声明
const AFileName: string);
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.DataSetToExcel(ADataSet: TCustomADODataSet;
const AFileName: string);
var
Table, ExcelApp, ExcelBook, ExcelSheet: Variant;
begin
{定义}
if not ADataSet.Active then Exit;
ExcelApp := CreateOleObject('Excel.Application');
ExcelApp.DisplayAlerts := False;
ExcelBook := ExcelApp.WorkBooks.Add;
ExcelSheet := ExcelBook.Sheets.Item[1];
Table := ExcelSheet.QueryTables.Add(ADataSet.Recordset, ExcelSheet.Range['A1']);
Table.Refresh(True);
ExcelBook.Close(True, AFileName);
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
{调用}
SaveDialog1.DefaultExt:='xls';
SaveDialog1.Filter:='*.xls|*.xls';
if SaveDialog1.Execute then begin
DataSetToExcel(ADOquery1, SaveDialog1.FileName);
end;end;end.
还有,为什么是ExcelBook.Close(True, AFileName),而不是ExcelBook.Close;
1.出现选择文件名及路径选择,你可以选择要保存的位置.
2:
expression.Close(SaveChanges, Filename, RouteWorkbook)expression 必需。该表达式返回上述对象之一。SaveChanges Variant 类型,可选。如果工作簿没有改变,则忽略此参数;如果工作簿发生了改变并且在另外的窗口中也打开了该工作簿,则仍然忽略此参数;如果工作簿发生了改变并且没有在另外的窗口中打开,则此参数将指定是否在工作簿中保存所发生的更改。取值与操作如下表所示:值作用True将改变保存到工作簿。如果该工作簿尚未命名,则使用 FileName 指定的名称。如果省略 FileName 参数,则要求用户输入文件名。False不将改变保存到此文件。省略显示一个对话框,要求用户决定是否保存所做的更改。
FileName Variant 类型,可选。以此文件名保存所做的更改。RouteWorkbook Variant 类型,可选。如果指定工作簿不需要传送给下一个收件人(没有传送名单或已经传送),则忽略该参数。否则,Microsoft Excel 将按照下表所示处理传送。3.我用了这个方法已经还下三年有多了,一直都好正常的.