📄 unit3.pas
字号:
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids, StdCtrls, DB, DBTables,
Buttons;
type
TForm3 = class(TForm)
DataSource1: TDataSource;
Table1: TTable;
Panel1: TPanel;
DBGrid1: TDBGrid;
Panel2: TPanel;
DBselect: TComboBox;
Label1: TLabel;
Label2: TLabel;
DBtabselect: TComboBox;
DBNavigator1: TDBNavigator;
SpeedButton1: TSpeedButton;
Label3: TLabel;
procedure DBselectChange(Sender: TObject);
procedure DBtabselectChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
procedure PrintXis(DataSet: TDataset;SName:String);
var
Form3: TForm3;
implementation
uses UnitExcel;
{$R *.dfm}
procedure TForm3.DBselectChange(Sender: TObject);
var
I:Integer;
S:String;
begin
I:=DBselect.ItemIndex; //获取选中的数据库在DBselect中的索引号
S:=DBselect.Items.Strings[I]; //通过索引号获取选中的数据库的名字
Table1.Active:=False;
DBtabselect.Items.Clear;
Session.GetTableNames(s,'*.*',True, False, DBtabselect.Items);
//获取选中的数据库中的所有表名,并存储在DBtabselect中
end;
procedure TForm3.DBtabselectChange(Sender: TObject);
begin
with Table1 do begin
if Table1.Active then //根据DBselect中的数据库名及DBtabselect中的数据表名设置Table1的属性
Active:=False;
DatabaseName:=DBselect.text;
TableName:=DBtabselect.text;
end;
Table1.Active:=True; //激活Table1
Label3.Caption:='记录数:'+IntToStr(Table1.RecordCount); //显示Table1所含的记录总数
end;
procedure TForm3.FormCreate(Sender: TObject);
begin
Session.GetDatabaseNames(DBselect.Items); //获取BDE中所有数据库的名字,并存储在DBselect中
end;
procedure PrintXis(DataSet: TDataset;SName:String);
var
nField,I,n:integer;
BookmarkRec:TBookmark; //定义书签类型变量BookmarkRec
begin
Screen.Cursor:=crhourglass; //置光标为工作状态
DataSet.DisableControls; //屏蔽控制信息
nField :=Dataset.FieldCount; //取数据集的字段总数
BookmarkRec:=DataSet.GetBookmark; //设置书签
with Formexcel do begin //启用Formexcel的方法
Excelopen; //连接excel应用程序,置为可视状态
NewXls; //创建一个新的工作簿
NewSheet(SName); // 添加一个的工作表
Application.MessageBox('即将开始打印,您现在还可以对工作表作一些设置!','提示',mb_ok);
for I:=0 to nField-1 do begin
Wtext(Dataset.FieldDefs[I].Name,1,I+1); //填写表头
end;
Dataset.First; //将数据集的指针指向第一条记录
n:=1; //初始行设为1
while not Dataset.Eof do begin //将数据库中的数据填入报表
n:=n+1; //行数加1
for I:=0 to nField-1 do begin
Wtext(Dataset.Fields[I].AsString,n,I+1); //填写ID字段中的数据写入第n行第1列单元格
end;
Dataset.Next; //将数据集的指针下移一条记录
end;
Dataset.GotoBookmark(BookmarkRec);//数据集的指针移到书签的位置
Dataset.FreeBookmark(BookmarkRec);//释放书签所占的缓存
AutoCol; //自动设置列宽
XLSSaveAs('c:\'+SName); //将excel文档用指定的文件名保存在C盘的根目录下
ExcelClose; // 关闭excel,切断连接
DataSet.EnableControls; //打开控制信息
end;
Screen.Cursor:=crdefault; //光标恢复正常状态
end;
procedure TForm3.SpeedButton1Click(Sender: TObject);
//将数据集Table1的数据生成Excel文件
begin
PrintXis(Table1,Table1.TableName);
end;
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=Cafree;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -