unit Unit1;

interface

uses

Printers,Windows, Messages, SysUtils, Variants, Classes,

Graphics, Controls, Forms,

Dialogs, ExcelXP, OleServer, StdCtrls, Grids,

Mask, RzEdit,frxDesgn,

frxClass, frxExportRTF, frxDBSet, frxExportPDF;

type papgxy=record

l,t,r,b:Extended;

end;





type bktype =record      // 边框

line:boolean;

color:integer;

width:Extended;

end;





type txttpye =record

text:string;

fontcolor, fontSize:integer;

FontBold,FontItalic:boolean;

thi,tvi:integer;//文字排列位置

fontstyle, fontname:string;

fontun,fontstr:boolean;

bcolor:integer;

end;





type cell= record

 t,L,h,w :Extended ;

 row,col,row2:integer;

 txt:txttpye;

 leftb,topb,Bottomb,Rightb:bktype;// 边框

 k:integer;

end;

type

  TForm1 = class(TForm)

    Button1: TButton;

    Button2: TButton;

    Ea1: TExcelApplication;

    Es1: TExcelWorksheet;

    fr1: TfrxReport;

    Memo1: TMemo;

    Button4: TButton;

    Button5: TButton;

    Ed2: TEdit;

    Ed1: TEdit;

    Od1: TOpenDialog;

    sd1: TSaveDialog;

    Button6: TButton;

    ed3: TEdit;

    Button7: TButton;

    Button8: TButton;

    Cs1: TComboBox;

    Button9: TButton;

    fd3: TfrxDBDataset;

    fd2: TfrxDBDataset;

    fd1: TfrxDBDataset;

    Button3: TButton;

    frxPDFExport1: TfrxPDFExport;

    procedure FormCreate(Sender: TObject);

    procedure Button4Click(Sender: TObject);

    procedure Button5Click(Sender: TObject);

    procedure Button8Click(Sender: TObject);

    procedure Button9Click(Sender: TObject);

    procedure FormClose(Sender: TObject; var Action: TCloseAction);

    procedure Button7Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button1Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var  Form1: TForm1;

implementation

{$R *.dfm}





function color_i(i:integer):tcolor;     //颜色转换

var c1: tcolor;

begin

case i of

1 : c1:=$000000;

2 : c1:=$FFFFFF;

3 : c1:=$0000FF;

4 : c1:=$00FF00;

5 : c1:=$FF0000;

6 : c1:=$00FFFF;

7 : c1:=$FF00FF;

8 : c1:=$FFFF00;

9 : c1:=$000080;

10 : c1:=$008000;

11 : c1:=$800000;

12 : c1:=$008080;

13 : c1:=$800080;

14 : c1:=$808000;

15 : c1:=$C0C0C0;

16 : c1:=$808080;

17 : c1:=$FF9999;

18 : c1:=$663399;

19 : c1:=$CCFFFF;

20 : c1:=$FFFFCC;

21 : c1:=$660066;

22 : c1:=$8080FF;

23 : c1:=$CC6600;

24 : c1:=$FFCCCC;

25 : c1:=$800000;

26 : c1:=$FF00FF;

27 : c1:=$00FFFF;

28 : c1:=$FFFF00;

29 : c1:=$800080;

30 : c1:=$000080;

31 : c1:=$808000;

32 : c1:=$FF0000;

33 : c1:=$FFCC00;

34 : c1:=$FFFFCC;

35 : c1:=$CCFFCC;

36 : c1:=$99FFFF;

37 : c1:=$FFCC99;

38 : c1:=$CC99FF;

39 : c1:=$FF99CC;

40 : c1:=$99CCFF;

41 : c1:=$FF6633;

42 : c1:=$CCCC33;

43 : c1:=$00CC99;

44 : c1:=$00CCFF;

45 : c1:=$0099FF;

46 : c1:=$0066FF;

47 : c1:=$996666;

48 : c1:=$969696;

49 : c1:=$663300;

50 : c1:=$669933;

51 : c1:=$003300;

52 : c1:=$003333;

53 : c1:=$003399;

54 : c1:=$663399;

55 : c1:=$993333;

56 : c1:=$333333;

 end;

  Result:=c1;

end;

function cd(i:Extended):Extended;

begin

 Result:=1.34*i;

end;





procedure papg_set(PageSet:Variant;P:Tfrxreportpage);

var a:integer;

begin

p.LeftMargin :=PageSet.LeftMargin/2.8348;

p.TopMargin  :=PageSet.topMargin/2.8348;

p.RightMargin :=PageSet.RightMargin/2.8348;

p.BottomMargin :=PageSet.BottomMargin/2.8348;

p.PrintOnPreviousPage:=True ; //合并打印

if PageSet.Orientation=2

 then p.Orientation:=poLandscape

 else p.Orientation:=poPortrait;

p.PaperSize:=PageSet.PaperSize;

{

if PageSet.PaperSize=xlPaperA3 then p.PaperSize:=DMPAPER_A3;

if PageSet.PaperSize=xlPaperA4 then p.PaperSize:=DMPAPER_A4;

if PageSet.PaperSize=xlPaperA5 then p.PaperSize:=DMPAPER_A5;

 }    

end;









function cell_du(row,col:integer;o1:integer;row2:integer):cell;

var mm:cell;

ms :boolean;

fontsyle1:string;

r2,c2:integer;

begin

with form1.Es1 do

begin

mm.txt.text :=Cells.Item[row,col];                 // 内容

mm.t        := Cells.Item[row,col].top;            //顶

mm.l        := cells.Item[row,col].left;           //左

mm.k:=0;

r2:= Cells.Item[row,col].MergeArea.Rows.Count;

mm.row2 :=R2;

if (o1>=1) and (col>=1) then

 mm.l:= cells.Item[row,col].left-cells.Item[row,2].left; //左





if (o1>=1) and (row>1)and (row>=row2) then

 mm.t:= cells.Item[row,col].top-cells.Item[row2,1].top; //顶

 ms:= cells.Item[row,col].MergeCells;   //检查是否为 合并单位

if ms then

begin

r2:= Cells.Item[row,col].MergeArea.Rows.Count;

c2:= Cells.Item[row,col].MergeArea.Columns.Count;

mm.h := Cells.Item[row+r2,col].top-Cells.Item[row,col].top;  //高度

mm.w := Cells.Item[row,col+c2].left-Cells.Item[row,col].left;//宽度

end else

begin

mm.h:= Cells.Item[row,col].height;      //高度

mm.w:= Cells.Item[row,col].width;       //宽度

end;

if o1=3 then

begin

mm.txt .FontBold := Cells.Item[row,col].font.Bold;

mm.txt .FontItalic:= Cells.Item[row,col].Font.Italic;

mm.txt .thi:=Cells.Item[row,col].HorizontalAlignment;

mm.txt .tvi:=Cells.Item[row,col].VerticalAlignment;





mm.txt.fontname := Cells.Item[row,col].font.name;      // 字名称

mm.txt.fontSize := Cells.Item[row,col].font.Size;      // 字大小

mm.txt.fontcolor:= Cells.Item[row,col].font.ColorIndex;// 字颜色

if mm.txt.fontcolor<=0 then  mm.txt.fontcolor :=1;

//mm.fontstyle:= cells.Item[row,col].FontStyle;      //字格式

mm.txt.bcolor:= Cells.Item[row,col].Interior.ColorIndex;// 底颜色





if  mm.txt.bcolor<=0 then  mm.txt.bcolor :=2;

//左1

If cells.Item[row,col].Borders[xlEdgeLeft].LineStyle = xlContinuous

     Then mm.k := 1 ;

// 右2

If cells.Item[row,col].Borders[xlEdgeRight].LineStyle = xlContinuous

    Then mm.k := mm.k + 2 ;

// 上4

If cells.Item[row,col].Borders[xlEdgeTop].LineStyle = xlContinuous

   Then mm.k := mm.k + 4 ;

//  '下8

If cells.Item[row,col].Borders[xlEdgeBottom].LineStyle = xlContinuous

 Then mm.k := mm.k + 8 ;

end;

 Result:=mm;

end;

end;





procedure txt_xie(j,i:integer;mm:cell);

var  e:TfrxMemoView; //text

begin

e:= TfrxMemoView.Create(form1.fr1.Pages[1]);

e.Left:=cd(mm.L);

e.top:=cd(mm.t);

e.Height:=cd(mm.h);

e.Width :=cd(mm.w);

e.Name  :='c'+ inttostr(j)+'r'+inttostr(i);

e.Text  :=mm.txt.text;//+' * '+  e.Name  ;

e.Font.Size :=mm.txt.fontSize ;

e.Font.Name :=mm.txt.fontname ;

e.Font.Color:= color_i(mm.txt.fontcolor);

e.Color := color_i(mm.txt.bcolor);

e.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];

end;

procedure pic2_xie(j,i:integer;mm:cell;pic:TfrxPictureView);

begin

pic.Left:=cd(mm.L);

pic.top:=cd(mm.t);

pic.Height:=cd(mm.h);

pic.Width :=cd(mm.w);

pic.Name  :=pic.Parent.Name+inttostr(j)+'_'+inttostr(i);

//e.Text  :=mm.txt.text ;//+' * '+  e.Name;

case mm.k of

   1:pic.Frame.Typ :=[ftLeft ];

   2:pic.Frame.Typ :=[ftRight ];

   3:pic.Frame.Typ :=[ftLeft,ftRight ];

   4:pic.Frame.Typ :=[ftTop ];

   5:pic.Frame.Typ :=[ftLeft,ftTop ];

   6:pic.Frame.Typ :=[ftRight,ftTop ];

   7:pic.Frame.Typ :=[ftLeft,ftRight,ftTop ];

   8:pic.Frame.Typ :=[ftBottom ];

   9:pic.Frame.Typ :=[ftLeft,ftBottom ];

  10:pic.Frame.Typ :=[ftRight,ftBottom ];

  11:pic.Frame.Typ :=[ftLeft,ftRight,ftBottom
];

  12:pic.Frame.Typ :=[ftTop,ftBottom ];

  13:pic.Frame.Typ :=[ftLeft,ftTop,ftBottom
];

  14:pic.Frame.Typ :=[ftRight,ftTop,ftBottom
];

  15:pic.Frame.Typ :=[ftLeft,ftRight,ftTop,ftBottom];

else

     pic.Frame.Typ :=[];

end;

end;





procedure txt2_xie(j,i:integer;mm:cell;e:TfrxMemoView);

begin

e.Left:=cd(mm.L);

e.top:=cd(mm.t);

e.Height:=cd(mm.h);

e.Width :=cd(mm.w);

e.Name  :=E.Parent.Name+inttostr(j)+'_'+inttostr(i);

e.Text  :=mm.txt.text ;//+' * '+  e.Name  ;

e.Font.Size :=mm.txt.fontSize ;

e.Font.Name :=mm.txt.fontname ;

e.Font.Style :=[];

if mm.txt.FontBold

 then  e.Font.Style:= [fsBold];

if mm.txt.FontItalic

 then  e.Font.Style:=e.Font.Style + [fsItalic];





 case mm.txt.tvi of  //垂直排版

-4108:e.VAlign:=vaCenter;

-4107:e.VAlign:=vaBottom ;

else

e.VAlign:=vatop ;

 end;





case mm.txt.thi of  //水平排版

-4108:e.HAlign := haCenter;

-4152:e.HAlign := haRight;

1    :e.HAlign := haRight;

else

e.HAlign := haLeft;

 end;

e.Font.Color:=  color_i(mm.txt.fontcolor);        //字颜色

e.Color := color_i(mm.txt.bcolor);                //背景颜色





case mm.k of

1:e.Frame.Typ:=[ ftLeft];

2:e.Frame.Typ:=[ ftRight];

3:e.Frame.Typ:=[ ftLeft,ftRight];

4:e.Frame.Typ:=[ ftTop];

5:e.Frame.Typ:=[ ftLeft,ftTop];

6:e.Frame.Typ:=[ ftRight,ftTop];

7:e.Frame.Typ:=[ ftLeft,ftRight,ftTop];

8:e.Frame.Typ:=[ ftBottom];

9:e.Frame.Typ:=[ ftLeft,ftBottom];

10:e.Frame.Typ:=[ ftRight,ftBottom];

11:e.Frame.Typ:=[ ftLeft,ftRight,ftBottom];

12:e.Frame.Typ:=[ ftTop,ftBottom];

13:e.Frame.Typ:=[ ftLeft,ftTop,ftBottom];

14:e.Frame.Typ:=[ ftRight,ftTop,ftBottom];

15:e.Frame.Typ:=[ ftLeft,ftRight,ftTop,ftBottom];

else

e.Frame.Typ :=[];

end;

end;





procedure TForm1.FormCreate(Sender: TObject);

begin

ed1.Text :=ExtractFilePath(ParamStr(0))+'模板.xls';

ed2.text:=ExtractFilePath(ParamStr(0));

ed3.Text :='ont.fr3';

end;





procedure TForm1.Button4Click(Sender: TObject);

begin

if od1.Execute then

begin

  ed1.Text := od1.FileName ;

  Button8.Click ;

end;

end;





procedure TForm1.Button5Click(Sender: TObject);

begin

if sd1.Execute then

begin

ed2.Text:=ExtractFilePath(sd1.FileName) ;

if pos('.fr3',sd1.FileName)>0

 then

   ed3.Text :=ExtractFileName(sd1.FileName)

 else

   ed3.Text :=ExtractFileName(sd1.FileName)+'.fr3';

end;

end;





{ vba

XlPaperSize 可为下面 XlPaperSize 常量之中的一个。

xlPaper11x17. 11 in. x 17 in.

xlPaperA4. A4 (210 mm x 297 mm)

xlPaperA5. A5 (148 mm x 210 mm)

xlPaperB5. A5 (148 mm x 210 mm)

xlPaperDsheet. D size sheet

xlPaperEnvelope11. Envelope #11 (4-1/2 in. x 10-3/8 in.)

xlPaperEnvelope14. Envelope #14 (5 in. x 11-1/2 in.)

xlPaperEnvelopeB4. Envelope B4 (250 mm x 353 mm)

xlPaperEnvelopeB6. Envelope B6 (176 mm x 125 mm)

xlPaperEnvelopeC4. Envelope C4 (229 mm x 324 mm)

xlPaperEnvelopeC6. Envelope C6 (114 mm x 162 mm)

xlPaperEnvelopeDL. Envelope DL (110 mm x 220 mm)

xlPaperEnvelopeMonarch. Envelope Monarch (3-7/8 in. x 7-1/2 in.)

xlPaperEsheet. E size sheet

xlPaperFanfoldLegalGerman. German Legal Fanfold (8-1/2 in. x 13 in.)

xlPaperFanfoldUS. U.S. Standard Fanfold (14-7/8 in. x 11 in.)

xlPaperLedger. Ledger (17 in. x 11 in.)

xlPaperLetter. Letter (8-1/2 in. x 11 in.)

xlPaperNote. Note (8-1/2 in. x 11 in.)

xlPaperStatement. Statement (5-1/2 in. x 8-1/2 in.)

xlPaperUser. 用户自己定义

xlPaper10x14. 25.40 cm. x 35.56 cm.

xlPaperA3. A3 (297 mm x 420 mm)

xlPaperA4Small. A4 Small (210 mm x 297 mm)

xlPaperB4. B4 (250 mm x 354 mm)

xlPaperCsheet. C size sheet

xlPaperEnvelope10. Envelope #10 (4-1/8 in. x 9-1/2 in.)

xlPaperEnvelope12. Envelope #12 (4-1/2 in. x 11 in.)

xlPaperEnvelope9. Envelope #9 (3-7/8 in. x 8-7/8 in.)

xlPaperEnvelopeB5. Envelope B5 (176 mm x 250 mm)

xlPaperEnvelopeC3. Envelope C3 (324 mm x 458 mm)

xlPaperEnvelopeC5. Envelope C5 (162 mm x 229 mm)

xlPaperEnvelopeC65. Envelope C65 (114 mm x 229 mm)

xlPaperEnvelopeItaly. Envelope (110 mm x 230 mm)

xlPaperEnvelopePersonal. Envelope (3-5/8 in. x 6-1/2 in.)

xlPaperExecutive. Executive (7-1/2 in. x 10-1/2 in.)

xlPaperFanfoldStdGerman. German Legal Fanfold (8-1/2 in. x 13 in.)

xlPaperFolio. Folio (8-1/2 in. x 13 in.)

xlPaperLegal. Legal (8-1/2 in. x 14 in.)

xlPaperLetterSmall. Letter Small (8-1/2 in. x 11 in.)

xlPaperQuarto. Quarto (215 mm x 275 mm)

xlPaperTabloid. Tabloid (11 in. x 17 in.)

}

procedure TForm1.Button8Click(Sender: TObject);

var b,a:string;

i,j,k,n:integer;

begin

ea1.Connect;

ea1.Workbooks.Open(ed1.Text ,null,null,null,null,

    null,null,null,null,null,null,null,null,null,null,0);





cs1.Items.Clear ;





k:=ea1.Workbooks[ExtractFileName(ed1.Text)].Sheets.Count;

for j:=1 to k do

begin

es1.ConnectTo(ea1.Workbooks[ExtractFileName(ed1.Text)].Worksheets[j] as ExcelWorksheet);

b:=es1.Name;

cs1.Items.Add(b);

end;

cs1.Text :=cs1.Items.Strings[0];

Button9.Enabled:=true;

end;





 procedure TForm1.Button9Click(Sender: TObject);

var

PageSet:OLEVariant;

i,j,k :integer;

frtemp: TfrxReport;

mm1,mm:cell;

r11,c11,r1:integer;

row,col:integer;

e  :TfrxMemoView;     //  text 文字框

pic:TfrxPictureView;  //  图片框





pt:TfrxReportTitle;

pf:TfrxReportSummary;

ht:TfrxPageHeader;

hf:TfrxPageFooter;

md:TfrxMasterData;

Mxd:TfrxDetailData;

sd:TfrxSubdetailData;

 P:Tfrxreportpage;

tempage:TfrxReportPage;

kk:integer;

Designer: TfrxDesignerForm;//

begin

frtemp:=TfrxReport.Create(form1);





// frtemp.DataSets.Add(fd1);

// frtemp.DataSets.Add(fd2);

// frtemp.DataSets.Add(fd3);

tempage:=TfrxReportPage.Create(frtemp);

tempage.NAME:='page1';

P:=Tfrxreportpage(tempage);

es1.ConnectTo(ea1.Workbooks

[ExtractFileName(ed1.Text)].Worksheets[cs1.text ] as ExcelWorksheet);





PAGESET:=ES1.PageSetup;

papg_set(PAGESET,p);

PAGESET:=UnAssigned;

  col :=es1.UsedRange[1].Columns.Count ; //excel   的列

  row :=es1.UsedRange[1].Rows.Count;     //excel   的行





 for k:=1 to row do

begin

  r1:= es1.Cells.Item[k,1].MergeArea.Row;//s.Count;

 if r1=k then

 begin

 mm:= cell_du(k,1,0,0);

 if mm.txt.text ='表头'

  then   begin

  pt:= TfrxReportTitle.Create(tempage);

  pt.Height:=cd(mm.h);

  pt.Name  :='pt';//'ban'+inttostr(k);

  for i:=k to k+mm.row2-1 do  //行

  for j:=2 to col do          //列

  begin

    r11:= es1.Cells.Item[i,j].MergeArea.Row;//s.Count;

    c11:= es1.Cells.Item[i,j].MergeArea.Column;//s.Count;

    if (r11=I) and (c11=J) then

    begin

     mm1:= cell_du(i,j,3,k);

      if mm1.txt.text='{[图片]}'

       then  begin

         pic:= TfrxPictureView.Create(pt);

         pic2_xie(i,j,mm1,pic);

         end else

         begin

          e:= TfrxMemoView.Create(pt);

          txt2_xie(i,j,mm1,e);

         end;

    end;

  end;

  end;





 if mm.txt.text ='页头'

 then begin

  ht:= TfrxPageHeader.Create(tempage);

  ht.Height:=cd(mm.h);

  ht.Name  :='HT';

  for i:=k to k+mm.row2-1 do  //行

  for j:=2 to col do        //列

  begin

  r11:= es1.Cells.Item[i,j].MergeArea.Row;//s.Count;

  c11:= es1.Cells.Item[i,j].MergeArea.Column;//s.Count;

  if (r11=I) and (c11=J) then

   begin

    mm1:= cell_du(i,j,3,k);    //读 excel cell的文字

       if mm1.txt.text='{[图片]}'

        then  begin

         pic:= TfrxPictureView.Create(HT);

         pic2_xie(i,j,mm1,pic);

                 end else

         begin

          e:= TfrxMemoView.Create(HT);

          txt2_xie(i,j,mm1,e);

         end;

   // e:= TfrxMemoView.Create(HT);

   // txt2_xie(i,j,mm1,e);

    end;

  end;

 end;

 if mm.txt.text ='页脚'

 then begin

  hf:=TfrxPageFooter.Create(tempage);

  hf.Height:=cd(mm.h);

  hf.Name  :='HF';

  for i:=k to k+mm.row2-1 do  //行

  for j:=2 to col do        //列

  begin

  r11:= es1.Cells.Item[i,j].MergeArea.Row;//s.Count;

  c11:= es1.Cells.Item[i,j].MergeArea.Column;//s.Count;

  if (r11=I) and (c11=J) then

   begin

    mm1:= cell_du(i,j,3,k);





     if mm1.txt.text='{[图片]}'

      then  begin

        pic:= TfrxPictureView.Create(HF);

        pic2_xie(i,j,mm1,pic);

         end else

       begin

         e:= TfrxMemoView.Create(HF);

         txt2_xie(i,j,mm1,e);

        end;

    //e:= TfrxMemoView.Create(HF);

    //txt2_xie(i,j,mm1,e);

    end;

  end;

  end;

 TRY

 if mm.txt.text ='主数据'

   then  begin

    md:=TfrxMasterData.Create(tempage);

    md.Height:=cd(mm.h);

    frtemp.DataSets.Add(fd1);

    md.Name  :='MD';

    md.DataSet:=fd1;

    MD.TOP:=MM.T;

  //md.DataSetName :='mda';

   memo1.Lines.Text :=  tempage.DataSetName;

  //.DataSet.

   for i:=k to k+mm.row2-1 do  //行

   for j:=2 to col do        //列

   begin

     r11:= es1.Cells.Item[i,j].MergeArea.Row;//s.Count;

     c11:= es1.Cells.Item[i,j].MergeArea.Column;//s.Count;

    if (r11=I) and (c11=J) then

     begin

      mm1:= cell_du(i,j,3,k);

      if mm1.txt.text='{[图片]}'

        then  begin

         pic:= TfrxPictureView.Create(MD);

         pic2_xie(i,j,mm1,pic);

        end else

         begin

          e:= TfrxMemoView.Create(MD);

          txt2_xie(i,j,mm1,e);

         end;

     // e:= TfrxMemoView.Create(MD);

      //txt2_xie(i,j,mm1,e);

     end;

   end;

  end;

 if mm.txt.text ='明细数据'

  then  begin

  Mxd:=TfrxDetailData.Create(tempage);

  Mxd.Height:=cd(mm.h);

  Mxd.Name  :='MXD';

  frtemp.DataSets.Add(fd2);

  MXD.TOP:=MM.T;

  mxd.DataSet:=fd2;

  for i:=k to k+mm.row2-1 do  //行

  for j:=2 to col do        //列

  begin

  r11:= es1.Cells.Item[i,j].MergeArea.Row;//s.Count;

  c11:= es1.Cells.Item[i,j].MergeArea.Column;//s.Count;

  if (r11=I) and (c11=J) then

   begin

    mm1:= cell_du(i,j,3,k);

       if mm1.txt.text='{[图片]}'

        then  begin

         pic:= TfrxPictureView.Create(MXD);

         pic2_xie(i,j,mm1,pic);

          end else

         begin

          e:= TfrxMemoView.Create(MXD);

          txt2_xie(i,j,mm1,e);

         end;

   // e:= TfrxMemoView.Create(MXD);

   // txt2_xie(i,j,mm1,e);

    end;

  end;

  end;





 if mm.txt.text ='子数据'

 then begin

  sd:=TfrxSubdetailData.Create(tempage);

  sd.Height:=cd(mm.h);

  sd.Name  :='SD';

  frtemp.DataSets.Add(fd3);

  sd.DataSet:=fd3;

  SD.TOP:=MM.T;

  for i:=k to k+mm.row2-1 do  //行

  for j:=2 to col do        //列

  begin

  r11:= es1.Cells.Item[i,j].MergeArea.Row;//s.Count;

  c11:= es1.Cells.Item[i,j].MergeArea.Column;//s.Count;

  if (r11=I) and (c11=J) then

   begin

    mm1:= cell_du(i,j,3,k);

       if mm1.txt.text='{[图片]}'

        then

        begin

         pic:= TfrxPictureView.Create(SD);

         pic2_xie(i,j,mm1,pic);

          end

       else

        begin

          e:= TfrxMemoView.Create(SD);

          txt2_xie(i,j,mm1,e);

         end;





    //e:= TfrxMemoView.Create(SD);

    //txt2_xie(i,j,mm1,e);

    end;

  end;

  end;

 if mm.txt.text ='表合计'  then





  begin

  pf:=TfrxReportSummary.Create(tempage);

  pf.Height:=cd(mm.h);

  pf.Name  :='PF';

  for i:=k to k+mm.row2-1 do  //行

  for j:=2 to col do        //列

   begin

   r11:= es1.Cells.Item[i,j].MergeArea.Row;//s.Count;

   c11:= es1.Cells.Item[i,j].MergeArea.Column;//s.Count;

    if (r11=I) and (c11=J) then

    begin

     mm1:= cell_du(i,j,3,k);





       if mm1.txt.text='{[图片]}'

        then  begin

         pic:= TfrxPictureView.Create(PF);

         pic2_xie(i,j,mm1,pic);

                 end else

         begin

          e:= TfrxMemoView.Create(PF);

          txt2_xie(i,j,mm1,e);

         end;

    //e:= TfrxMemoView.Create(pF);

    //txt2_xie(i,j,mm1,e);

    end;

   end;

  end;

   except

   SHOWMESSAGE('错误出如今 K='+INTTOSTR(K)+' I='+INTTOSTR(I)+ ' JC='+INTTOSTR(I) )

   END;

 end;









 end;

// frtemp.SetProperty()

 //.setpr

 frtemp.DesignReport();

 frtemp.SaveToFile(ed2.Text +ed3.Text);

 frtemp.Free;

  fr1.LoadFromFile(ed2.Text +ed3.Text);

  





 //fr1.DesignPreviewPage;

 end;









{

ver:

aaaa:OLEVariant

ExcelApp.activeworkbook.close;

  ExcelApp.Quit;

  ExcelApp:=UnAssigned;

}

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

es1.Disconnect;

ea1.Quit ;

ea1.Disconnect ;





end;





procedure TForm1.Button7Click(Sender: TObject);

var i:Integer;

begin





fr1.DesignReport();

end;





procedure TForm1.Button2Click(Sender: TObject); //连续打印2个报表

begin

//   fr1.LoadFromFile(ed2.Text +ed3.Text);

fr1.LoadFromFile('D:\excel\新建目录 (2)\1.fr3');





fr1.PrepareReport(True );

fr1.LoadFromFile('D:\excel\新建目录 (2)\3.fr3');

fr1.PrepareReport(False );





fr1.ShowPreparedReport ;

end;





procedure TForm1.Button1Click(Sender: TObject);

begin   

fr1.ShowReport(True );

end;





procedure TForm1.Button3Click(Sender: TObject);

var i:Integer ;

p : TfrxReportPage;





begin     //3个报表连续 合并

fr1.LoadFromFile('D:\excel\新建目录 (2)\4.fr3');

fr1.PrepareReport(True);





fr1.LoadFromFile('D:\excel\新建目录 (2)\1.fr3');

fr1.PrepareReport(false);

p := TfrxReportPage(fr1.Objects[1]);

p.PrintOnPreviousPage :=True;

fr1.DesignReport();





fr1.LoadFromFile('D:\excel\新建目录 (2)\3.fr3');

fr1.PrepareReport(False);

p := TfrxReportPage(fr1.Objects[1]);

p.PrintOnPreviousPage :=True;





fr1.DesignReport();

 { i:= fr1.PreviewPages.Count;

  ShowMessage(IntToStr(i));

fr1.PreviewPages.Page[0].PrintOnPreviousPage:=True;

}

fr1.DesignReport();

 p := TfrxReportPage(fr1.Objects[1]);

p.PrintOnPreviousPage :=True;

p := TfrxReportPage(fr1.Objects[1]);

p.PrintOnPreviousPage :=True;

fr1.ShowPreparedReport ;

end;





end.

Delphi Excel FastReport的更多相关文章

  1. Delphi Excel 操作大全

    Delphi Excel 操作大全 (一) 使用动态创建的方法首先创建 Excel 对象,使用ComObj:var ExcelApp: Variant;ExcelApp := CreateOleObj ...

  2. Delphi Excel导入 的通用程序转载

    Delphi Excel导入 的通用程序 (-- ::)转载▼ 标签: it 分类: Delphi相关 步骤: 连excel(自己知道其格式,最好是没个字段在数据一一对应) 读excel数据,填入到数 ...

  3. Delphi Excel

    用delphi写excel文件 2007-03-18 21:12 1.引用:      Excel2000, OleServer,Comobj, StdCtrls 2.声明变量:     ExcelA ...

  4. Delphi Excel导入 的通用程序

    步骤: 1 连excel(自己知道其格式,最好是没个字段在数据一一对应) 2 读excel数据,填入到数据库 我这里有个函数,实现把excel表格中数据导入数据库,在一条数据导入前判断数据库中是否有该 ...

  5. Delphi Excel操作,写了个ADODataSet转Excel的函数作为后期学习的例子

    使用该函数需要先Use Excel2010 //DataSet导出Excel2010格式//FileName=待导出的Excel的文件名,不带路径以及后缀:TitleLine1=导出后Excel第一表 ...

  6. Delphi中使用python脚本读取Excel数据

    Delphi中使用python脚本读取Excel数据2007-10-18 17:28:22标签:Delphi Excel python原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 . ...

  7. FASTREPORT 整理 (mtm)

    DELPHI中用FASTREPORT制作报表  1.加载并存储报表 默认情况下,报表窗体同项目窗体构存储在同一个DFM文件中.多数情况下,无须再操作,因而你就不必采用特殊方法加载报表. 如果你决定在文 ...

  8. FastReport安装说明(中文版)

    FastReport安装说明(中文版) 内容列表 I. IntroductionI. 介绍II. Manual installing of the FastReport packagesII. 手动安 ...

  9. fastReport.net 初了解

    delphi 中fastReport rmReport都很好用,转到.net了,第一想法也是这两个,好在这里有个fastReport; 这个安装呢 找个破解的 有个4.x版 安完建一个winForm  ...

随机推荐

  1. AJAX获取JSON形式的数据

    test.html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  2. Surface Pro 4 和 Surface Book 使用名为 Surface UEFI(统一可扩展固件接口)的新固件接口

    Surface Pro 4 和 Surface Book 使用名为 Surface UEFI(统一可扩展固件接口)的新固件接口.Surface UEFI 提供新功能,如启动更快速.安全性更高.可替换 ...

  3. android 获取http网络图片保存png

    1.android 获取网络图片的方式很多,普通网络通信的方式都可以用在获取网络图片上. android   http获取数据常用的方式: 1.Apache接口(HttpClient) 2.标准Jav ...

  4. COB (Chip On Board) 製程介紹/簡介/注意事項 I

    COB (Chip On Board)在電子製造業並不是一項新鮮的技術,但最近我卻常常被問到相關的問題及資料索取.也許真的是產品越來越小了,而較進階的技術又太貴,所以又有人回過頭來考慮COB的製程. ...

  5. Office 2010简体中文正式版完美终身破解版免费下载

    名称:Microsoft Office Professional 2010 正式版(JK破解免序列号安装版) Microsoft Office 2010 专业版 优点:用官方Microsoft off ...

  6. XDocument读取xml的所有元素以及XPath语法

    原文  http://www.cnblogs.com/xxyishutong/p/3326375.html <?xml version="1.0" encoding=&quo ...

  7. Android_Intent意图详解

    本博文为子墨原创,转载请注明出处! http://blog.csdn.net/zimo2013/article/details/11863857 1.Intent作用 Intent是一个将要执行的动作 ...

  8. [置顶] 北漂的大三IT男(暂完)

    今天是2013年8月9日,是我待在北京的最后一个晚上,今天我已经正式向公司提出辞职了,虽然公司已经答应从下个月起涨部分工资,但是我还是坚决的离开了,回想当时进公司的想法----------干了一个月后 ...

  9. 使用PHP实现请求响应和MySql访问

    在iOS开发当中经常需要使用来自后台的数据,所以使用一种很简便的写后台的方法. 首先,安装XAMPP,这是一个集成好的阿帕奇+MySQL环境,点击按钮即可开启服务,不需要进行任何环境配置. 然后,开启 ...

  10. Android开发(27)--TextView单击链接弹出Activity

    话不多说直接上码: 核心源码: package com.example.textview4; import android.app.Activity; import android.content.I ...