Delphi Excel FastReport

这段代码展示了如何在Delphi应用程序中使用FastReport从Excel文件读取数据,并创建报告。它涉及到处理Excel表格的边框、颜色、字体样式等属性,并将这些内容转化为FastReport的组件进行显示。代码通过遍历Excel单元格,根据边框样式创建相应的报告元素,包括文本和图片,并设置了相应的排版和格式。
摘要由CSDN通过智能技术生成


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值