把資料從表中導入到EXCEL中

本文介绍了使用Delphi控制Excel进行数据导入、报表生成和格式设置的方法,包括创建Excel文件、数据交换、单元格操作、复制粘贴、文件保存等步骤。此外,还探讨了报表格式选择、打印控制以及时间与表头处理等关键问题,适用于复杂报表的自动化生成。
摘要由CSDN通过智能技术生成
法一:

unit main;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ZAbstractRODataset, ZAbstractDataset, ZDataset, DB, DBClient,
Provider, GridsEh, DBGridEh, RzPanel, RzStatus, ExtCtrls, ZConnection,
BusinessSkinForm, StdCtrls, RzLabel, RzEdit, RzButton, DBCtrls, RzDBNav,
ImgList, Grids, DBGrids,ShellAPI, Mask, RzTray;

type
Tmainfrm = class(TForm)
BSFrmExcel: TbsBusinessSkinForm;
Connect: TZConnection;
pnlExcel: TRzPanel;
RzStatusBar1: TRzStatusBar;
RzToolbar1: TRzToolbar;
RzStatusPane1: TRzStatusPane;
RzClockStatus1: TRzClockStatus;
grbxShow: TRzGroupBox;
dbgExcel: TDBGridEh;
dscExcel: TDataSource;
DtStExcel: TDataSetProvider;
cdsExcel: TClientDataSet;
qryExcel: TZQuery;
mmSQL: TRzMemo;
lblSQL: TRzLabel;
RzSpacer1: TRzSpacer;
btnContron: TRzToolButton;
RzSpacer2: TRzSpacer;
btnExcelInt: TRzToolButton;
RzSpacer3: TRzSpacer;
btnExcelOut: TRzToolButton;
btnExit: TRzToolButton;
RzSpacer4: TRzSpacer;
NvgtrExcel: TRzDBNavigator;
ImgLstExcel: TImageList;
btnRfresh: TRzToolButton;
RzTrayIcon1: TRzTrayIcon;
procedure btnExitClick(Sender: TObject);
procedure btnExcelOutClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure mmSQLKeyPress(Sender: TObject; var Key: Char);
procedure btnRfreshClick(Sender: TObject);
procedure btnContronClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
mainfrm: Tmainfrm;

implementation

{$R *.dfm}

procedure Tmainfrm.btnExitClick(Sender: TObject);
begin
close;
end;

procedure Tmainfrm.btnExcelOutClick(Sender: TObject);
var
strTemp:string;
strSQL:string;
f:TextFile;
i,j:integer;
begin
strSQL:=mmSQL.Text;

with qryExcel do
begin
//======
Close;
SQL.Clear;
SQL.Add(strSQL);
Open;
cdsExcel.Active := false;
cdsExcel.Active := true;
//===
try
AssignFile(f,'ExcelTable/Excel.xls');
Rewrite(f);
//====
First;
strTemp := '';
//====
for i := 0 to Fields.Count - 1 do
begin
//====
if Fields[i].FieldName <> '' then
//====
if Fields[i].FieldName = 'ID' then
strTemp := strTemp + ''+#9 //====
else
strTemp := strTemp + Fields[i].FieldName + #9;
end;
Writeln(f,strTemp);
//====
for i := 0 to RecordCount - 1 do
begin
//====
strTemp := '';
for j := 0 to Fields.Count - 1 do
begin
//====
if Fields[j].FieldName <> '' then
strTemp := strTemp + fields[j].AsString + #9;
end;
//====
Writeln(f,strTemp);
//====
Next;
end;
finally
CloseFile(f);
end; //====End File Try
end;
//====
ShellExecute(0,nil,'ExcelTable/Excel.xls',nil,nil,0);
//====
//Application.Terminate;
end;

procedure Tmainfrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Connect.Connected := false;
end;

procedure Tmainfrm.mmSQLKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
btnExcelOutClick(Sender);
end;

procedure Tmainfrm.btnRfreshClick(Sender: TObject);
begin
mmSQL.Text := '';
mmSQL.Text := 'select * from ';

end;

procedure Tmainfrm.btnContronClick(Sender: TObject);
begin
if cdsExcel.Active then
cdsExcel.Close
else
cdsExcel.Open;

end;

end.


**************************************************************************************************************************************************************************

方法二:

如何把数据输入到excel特定的表格中
Delphi作为一个出色的RAD,强大的数据库功能是其最重要的特

色之一,但是操纵困难的QuickReport控件常常不能满足数据库

报表的需要。如果你的报表非常复杂,或者要求灵活地改变格式

,那么使用Excel作为报表服务器是一个不错的选择。Delphi从

版本5开始提供的Excel组件极大地简化了OLE自动化技术的应用

。不过缺漏多多的帮助文件一直是Delphi最令人诟病的地方,这

些新组件也不例外,本文试图对此作一较详细地介绍。
Excel的对象模型是一个树状的层次结构,根是应用程序本身,

工作簿WorkBook是根对象的属性对象,本文主要讨论的用于数据

交换的WorkSheet则是工作簿的属性对象,详情参阅MSOffice提

供的Excel VBA帮助文件。在Delphi中控制Excel首先要与服务器

程序建立连接,打开工作簿,然后与目标工作表交换数据,最后

断开连接。

打开Excel工作簿
  我们的例子从一个带有TStringGrid(当然要填上一些数据

)和两个按钮的主窗体开始,从控制面板的Servers页签中拖一

个TExcelApplication控件放到窗体上。首先把ConnectKind设为

ckRunningOrNew,表示如果能够检测到运行的Excel实例则与其

建立联系,否则启动Excel。另外,如果希望程序一运行即与服

务器程序建立联系,可以把AutoConnect属性设为True。
与Excel建立联系只要一条语句就可以了:
Excel . Connect;
也许你已经注意到Servers页签上还有其他几个Excel控件,这些

控件通过ConnectTo方法可以与前面的Excel联系在一起:
ExcelWorkbook1.ConnectTo(Excel . ActiveWorkbook);
ExcelWorksheet1.ConnectTo(Excel . ActiveSheet as

_Worksheet);
ExcelWorksheet2.ConnectTo(Excel . Worksheets.Item

['Sheet2'] as _Worksheet);
要注意,使用ConnectTo方法前必须先打开相应的工作簿或工作

表,另外这些控件在多数情况下并不会带来额外的便利,因此最

好只使用一个TExcelApplication。
一旦与Excel服务器建立联系,就可以创建新的工作簿:
var
wkBook : _WorkBook;
LCID : Integer;
...
LCID := GetUserDefaultLCID();
wkBook := Excel.Workbooks.Add(EmptyParam, LCID);
Add函数的第一个参数用于定义新建工作簿所使用的模板,可以

使用xlWBATChart、xlWBATExcel4IntlMacroSheet、

xlWBATExcel4MacroSheet或者xlWBATWorksheet常量,也可以是

已有的xls文件名。这里的EmptyParam是Variants单元与定义的

变量,表示使用默认的通用模板创建新工作簿。
如果打开已有的xls文档,则应把要打开的文件名作为第一个参

数传递给Open函数:
wkBook:&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值