⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmdybb.pas

📁 delphi+excel报表管理程序
💻 PAS
字号:
unit frmdybb;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Excel2000, OleServer, StdCtrls, OleCtnrs, Menus,IniFiles,ComObj;

type
  TForm3 = class(TForm)
    ExcelApplication1: TExcelApplication;
    ExcelWorkbook1: TExcelWorkbook;
    ExcelWorksheet1: TExcelWorksheet;
    PrintDialog1: TPrintDialog;
    SaveDialog1: TSaveDialog;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    Label3: TLabel;
    Label4: TLabel;
    ComboBox2: TComboBox;
    Label5: TLabel;
    ComboBox3: TComboBox;
    Label2: TLabel;
    ComboBox1: TComboBox;
    ExcelWorksheet2: TExcelWorksheet;
    ExcelWorkbook2: TExcelWorkbook;
    ExcelApplication2: TExcelApplication;
    OleContainer1: TOleContainer;
    Button1: TButton;
    Label1: TLabel;
    procedure ComboBox2Select(Sender: TObject);
    procedure ComboBox3Select(Sender: TObject);
    procedure ComboBox1Select(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

uses frmmain;

{$R *.dfm}

procedure TForm3.ComboBox2Select(Sender: TObject);
var
bbml,sbmb,search,lujing,s1,cjml:string;
MyIni:TIniFile;
begin
//初始化路径
MyIni:=Tinifile.create('.\lj.ini');
sbmb:=myini.ReadString('系统路径设置','系统路径','')+'\报表\识别模板\'+trim(ComboBox1.Text);
lujing:=myini.ReadString('系统路径设置','系统路径','')+'\报表\报表目录\'+combobox2.text+combobox3.text;
search:=filesearch(ComboBox1.Text,lujing);
bbml:=myini.ReadString('系统路径设置','系统路径','')+'\报表\报表目录\'+combobox2.text+combobox3.text+'\'+trim(ComboBox1.Text);
s1:=combobox1.text;
//结束
//判断年列表是否为空
if ComboBox2.Text='' then
  begin
  application.MessageBox('请选择要打开的报表所属的年份!','系统提示');
  exit;
  end;
//判断年列表结束
//判断月列表是否为空
if ComboBox3.Text='' then
  begin
  exit;
  end;
//判断月列表结束
//判断报表类型列表的内容是否为空
if ComboBox1.Text<>'' then
  begin
        s1:=ComboBox1.Text;
        label1.Caption:=search;
        //判断打开的报表是否存在
         if search='' then  //如果要打开的报表不存在,则自动创建模板
            begin
            cjml:=myini.ReadString('系统路径设置','系统路径','')+'\报表\报表目录\'+ComboBox2.Text+ComboBox3.Text;
            MkDir(cjml);
         //复制报表
         CopyFile(pchar(sbmb),pchar(bbml),false);
        //复制报表结束
            end;
        //判断打开的报表是否存在结束
  end
else
  begin
  exit;
  end;
//判断报表类型列表结束
OleContainer1.Enabled:=true;
//结束
end;

procedure TForm3.ComboBox3Select(Sender: TObject);
var
bbml,sbmb,search,lujing,s1,cjml:string;
MyIni:TIniFile;
begin
//初始化路径
MyIni:=Tinifile.create('.\lj.ini');
sbmb:=myini.ReadString('系统路径设置','系统路径','')+'\报表\识别模板\'+trim(ComboBox1.Text);
lujing:=myini.ReadString('系统路径设置','系统路径','')+'\报表\报表目录\'+combobox2.text+combobox3.text;
search:=filesearch(ComboBox1.Text,lujing);
bbml:=myini.ReadString('系统路径设置','系统路径','')+'\报表\报表目录\'+combobox2.text+combobox3.text+'\'+trim(ComboBox1.Text);
s1:=combobox1.text;
//结束
//判断年列表是否为空
if ComboBox2.Text='' then
  begin
  application.MessageBox('请选择要打开的报表所属的年份!','系统提示');
  exit;
  end;
//判断年列表结束
//判断月列表是否为空
if ComboBox3.Text='' then
  begin
  exit;
  end;
//判断月列表结束
//判断报表类型列表的内容是否为空
if ComboBox1.Text<>'' then
  begin
        s1:=ComboBox1.Text;
        label1.Caption:=search;
        //判断打开的报表是否存在
         if search='' then  //如果要打开的报表不存在,则自动创建模板
            begin
            cjml:=myini.ReadString('系统路径设置','系统路径','')+'\报表\报表目录\'+ComboBox2.Text+ComboBox3.Text;
            MkDir(cjml);
         //复制报表
         CopyFile(pchar(sbmb),pchar(bbml),false);
        //复制报表结束
            end;
        //判断打开的报表是否存在结束
  end
else
  begin
  exit;
  end;
//判断报表类型列表结束
//结束
end;

procedure TForm3.ComboBox1Select(Sender: TObject);
var
bbml,sbmb,search,lujing,s1,cjml:string;
MyIni:TIniFile;
begin
//初始化路径
MyIni:=Tinifile.create('.\lj.ini');
sbmb:=myini.ReadString('系统路径设置','系统路径','')+'\报表\识别模板\'+trim(ComboBox1.Text);
lujing:=myini.ReadString('系统路径设置','系统路径','')+'\报表\报表目录\'+combobox2.text+combobox3.text;
search:=filesearch(ComboBox1.Text,lujing);
bbml:=myini.ReadString('系统路径设置','系统路径','')+'\报表\报表目录\'+combobox2.text+combobox3.text+'\'+trim(ComboBox1.Text);
s1:=combobox1.text;
//结束
//判断年列表是否为空
if ComboBox2.Text='' then
  begin
  application.MessageBox('请选择要打开的报表所属的年份!','系统提示');
  exit;
  end;
//判断年列表结束
//判断月列表是否为空
if ComboBox3.Text='' then
  begin
  exit;
  end;
//判断月列表结束
//判断报表类型列表的内容是否为空
if ComboBox1.Text<>'' then
  begin
        s1:=ComboBox1.Text;
        label1.Caption:=search;
        //判断打开的报表是否存在
         if search='' then  //如果要打开的报表不存在,则自动创建模板
            begin
            cjml:=myini.ReadString('系统路径设置','系统路径','')+'\报表\报表目录\'+ComboBox2.Text+ComboBox3.Text;
            MkDir(cjml);
         //复制报表
         CopyFile(pchar(sbmb),pchar(bbml),false);
        //复制报表结束
            end;
        //判断打开的报表是否存在结束
  end
else
  begin
  application.MessageBox('请选择要打开的报表名称!','系统提示');
  exit;
  end;
//判断报表类型列表结束
//结束
end;

procedure TForm3.Button1Click(Sender: TObject);
var
MyIni:TIniFile;
ExcelApp: Variant;
bbml:string;
begin
MyIni:=Tinifile.create('.\lj.ini');
//判断年列表是否为空
if ComboBox2.Text='' then
  begin
  application.MessageBox('请选择要打印报表所属的年份!','系统提示');
  exit;
  end;
//判断年列表结束
//判断月列表是否为空
if ComboBox3.Text='' then
  begin
  application.MessageBox('请选择要打印报表所属的月份!','系统提示');
  exit;
  end;
//判断月列表结束
//判断报表类型是否为空
if combobox1.Text='' then
  begin
  application.MessageBox('请选择要打印报表的类型!','系统提示');
  end;
//判断报表类型结束
bbml:=myini.ReadString('系统路径设置','系统路径','')+'\报表\报表目录\'+combobox2.text+combobox3.text+'\'+trim(ComboBox1.Text);
//OLEContaner打开报表
OleContainer1.DestroyObject;
OleContainer1.CreateObjectFromFile(bbml,false);
//OLEContaner打开报表结束
/////////////
ExcelApp := CreateOleObject( 'Excel.Application' );
ExcelApp.Visible := True;
ExcelApp.Caption := '打印报表';
//ExcelApp.WorkBooks.Add;
ExcelApp.WorkBooks.Open(bbml);
ExcelApp.ActiveSheet.PrintPreview;
end;

procedure TForm3.FormShow(Sender: TObject);
var
year:string;
i:integer;
j:integer;
begin
//更新报表年列表
ComboBox2.Items.Clear;
year:=datetostr(date());
ComboBox2.Items.Add(inttostr(strtoint(copy(year,0,4))+1));
ComboBox2.Items.Add(copy(year,0,4));
ComboBox2.Items.Add(inttostr(strtoint(copy(year,0,4))-1));
//更新年列表结束
//更新报表类型列表
try
form1.ADOQuery1.Close;
form1.ADOQuery1.SQL.Clear;
form1.ADOQuery1.SQL.Add('select * from template');
form1.ADOQuery1.Open;
i:=form1.ADOQuery1.RecordCount;
ComboBox1.Clear;
for j := 1 to i do
begin
form1.ADOQuery1.Close;
form1.ADOQuery1.SQL.Clear;
form1.ADOQuery1.SQL.Add('select * from template');
form1.ADOQuery1.SQL.Add('where id=:a1');
form1.adoquery1.Parameters.ParamValues['a1']:=inttostr(j);
form1.ADOQuery1.Open;
if (form1.ADOQuery1.Fields.Fields[3].AsString='1') then
if (form1.ADOQuery1.Fields.Fields[4].AsString='1') then
ComboBox1.Items.Add(form1.ADOQuery1.Fields.Fields[1].AsString);
end;
except;
end;
//更新报表类型列表结束
end;

procedure TForm3.N3Click(Sender: TObject);
begin
if (application.MessageBox('是否真的要退出该系统?(Y/N)','系统提示',MB_YESNO)=IDNO) then
   exit
else
   application.Terminate;
end;

procedure TForm3.N2Click(Sender: TObject);
begin
self.Close;
end;

procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
OleContainer1.DestroyObject;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -