在Delphi编程中利用Excel实现动态报表
- 格式:pdf
- 大小:200.49 KB
- 文档页数:4
【Delphi】汇出Excel时,Excel单元格格式设置(附Delphi操作Excel方法)一个例子:excelworksheet1.Cells.Item[row,3]. numberformatlocal:='$#,##0.00;[红色]-$#,##0.00';excelworksheet1.Cells.Item[row,3].Formula:='=SUM(R[-'+inttostr(row-rowflag+1)+']C:R[-1]C)';excelworksheet1.Cells.Item[row,3].Borders[3].LineStyle :=xlContinuous; excelworksheet1.Cells.Item[row,3].Borders[4].LineStyle :=xlDouble; excelworksheet1.Cells.Item[row,4].Borders[3].LineStyle :=xlContinuous; excelworksheet1.Cells.Item[row,4].Borders[4].LineStyle :=xlDouble; excelworksheet1.Cells.Item[row,4].Formula:='=R[-1]C';注:不知道公式及格式,均可通过录制宏找出对应公式及格式。
效果如下图:资料来自网络单元格设置1.设置单元格线框Excel.ActiveSheet.Range[B10:C13].Borders[N].LineStyle := xlNoneExcel.ActiveSheet.Range[B10:C13].Borders[N].Weight := xlThin边框的类型 Borders[N]xlEdgeLeft 左=1xlEdgeRight 右=2xlEdgeTop 顶=3xlEdgeBottom 底=4xlDiagonalUp 左上右下=5xlDiagonalDown 左下右上=6xlEdgeLeft 外部左边框=7xlEdgeTop 外部上边框=8xlEdgeBottom 外部下边框=9xlEdgeRight 外部右边框=10xlInsideVertical 内部竖线=11xlInsideHorizontal 内部横线=12(其中1:为左 2:右 3:顶 4:底 5:斜\ 6:斜/)线条类型LineStyle,宽度Weight单条线的LineStyle := xlContinuous双条线的LineStyle := xlDouble虚线 xlHairline 1实线 xlThin中实线 xlMedium粗实线 xlThick2.给单元格赋值:Excel.Cells[1,4].Value := 第一行第四列;3.设置第一行字体属性(隶书,蓝色,加粗,下划线):Excel.ActiveSheet.Rows[1] := 隶书; Excel.ActiveSheet.Rows[1].Font.Color := clBlue; Excel.ActiveSheet.Rows[1].Font.Bold := True; Excel.ActiveSheet.Rows[1].Font.UnderLine := True;4.设置整个表字体为9Excel.Cells.Font.Size:=9;5.在第8行之前插入/删除分页符:Excel.WorkSheets[1].Rows[8].PageBreak := 1; (0为删除)6.清除第一行第四列单元格公式:Excel.ActiveSheet.Cells[1,4].ClearContents;7.从数字类型转换成文本类型(不知道格式化字符串,请录制宏,抽出宏中格式化字符串。
DELPHI报表的动态生成(Create Delphi Dynamic Report)摘要:本文主要介绍如何在DELPHI开发环境下动态生成报表,给出公用模块,并结合具体示例分析了实现的主要技术问题,给出解决这些问题的技术细节。
关键词:DELPHI报表、动态创建一、引言报表是数据库应用程序的重要部分,可是报表的生成也是数据库开发中最麻烦的一项工作。
报表格式复杂多样,一直是使程序员头疼的事。
DELPHI 在其3.0以后版本中加入了QUICKREPORT,使这种情形有所改变。
它的全部可视化编程以及设计和运行过程中都可以进行预览等特性给程序开发带来了很大的方便。
我们可以通过在应用程序设计阶段往窗体中添加报表控件,再与数据库表组件Ttable,查询组件Tquery等数据访问组件相关联,从而实现报表的预览与报表的输出。
但在许多应用程序中,程序员往往期望从静态或者动态生成的数据库表中动态提取所需数据,进而生成报表输出。
本文介绍的就是如何动态选择所需数据,动态生成报表的公用模块。
这种动态方式生成的报表更加灵活,也更加容易做到报表的格式统一。
动态报表主要是在程序运行阶段利用Creat方法动态创建控件,设置其Parent属性来设置其容器控件。
然后,在程序中根据所选择的数据库表中的数据字段的长度和数目,通过修改控件的大小和位置属性,来控制控件的大小和外观,如果该控件有事件,可直接把函数或过程名赋给它的相应事件名。
二、动态报表的实现下面结合一个具体实例来说明如何其实现的方法和技术。
1、基本思路数据来源,我们以DELPHI自带的DBDEMOS中的employee.db表为例,它共有6个字段。
在F_main主窗体中(如图一),可以自由选择所需要打印的字段。
它的主要控件及属性设置如下:①.Table1:Databasename设置为DEDEMOS,Tablename设置为employee.db②.Listbox1:显示所连数据库表中的全部字段③.Listbox2:用于选择所需报表输出的字段④.AddBitBtn:用于把所选择的字段名添加到Listbox2中⑤.DeleteBitBtn:用于把Listbox2中的字段名去掉⑥.PreviewBitBtn:用于报表的预览⑦.PrintBitBtn:用于报表的输出⑧.CloseBitBtn:用于关闭应用程序在F_report窗体中,放置了以下主要控件,并设置属性,以减少程序的篇幅:①.Table1:Databasename设置为DEDEMOS,Tablename设置为employee.db②.QuickRep1:papesize属性为A4,dataset属性为Table1,bands 属性中的hascolumnheader、hasdetail、hastitle设置为True显示数据库表中的全部字段在F_report的Oncreate事件中加入了如下代码:Table1.Open;if Table1.Active thenTable1.GetFieldNames(Listbox1.Items);// 获得数据库表中的全部字段名DeleteBitBtn.Enabled:=False; //在Listbox2中无字段时,DeleteBitBtn变灰2、从Listbox1中选择字段添加到Listbox2中为AddBitBtn的Onclick事件加入如下代码:if listbox1.Items.Count=0 then exit; //如Listbox1中无可供选择的字段,则执行空操作if listbox1.Selected[listbox1.ItemIndex] then //在Listbox1中选择字段beginListbox2.Items.Add(Listbox1.Items[Listbox1.ItemIndex]);//往Listbox2中增加选中的字段Listbox1.Items.Delete(Listbox1.ItemIndex);//从Listbox1中删除此字段if Listbox2.Items.Count>=1 then //在Listbox2中有字段才允许执行删DeleteBitBtn.Enabled:=True;end;3、从Listbox2中删除不需要的字段为DeleteBitBtn的Oncreate事件添加如下代码:if Listbox2.Items.Count=0 then exit; // 如果Listbox2中无字段,则执行空操作if listbox2.Selected[Listbox2.ItemIndex] then //在Listbox2中选择字段beginListbox1.Items.Add(Listbox2.items[Listbox2.itemindex]); //添加到Listbox1中Listbox2.Items.Delete(Listbox2.itemindex); //从Listbox2中删除此字段end;if Listbox2.Items.Count=0 then //如果Listbox2中无字段,则DeleteBitBtn变灰DeleteBitBtn.Enabled:=False;4、在报表中动态添加一列的步骤:①.TitleBand1中打印的是报表的名称,这里假设为:动态报表生成示例。
如何在Delphi中操作Excel在数据库应用软件的开发过程中,经常需要把数据转换成Excel文件,让用户作进一步的数据处理。
而Delphi是开发数据库应用系统的常用工具,那么,如何在Delphi中操作Excel呢?我们知道,在Microsoft Office软件中有一种内嵌的编程语言VBA,它是一种宏语言,利用它,你可以编写出功能强大的代码,如打开文件、修改数据、保存数据和设置字体等。
另一方面,Microsoft Office软件中的宏能以VBA代码的形式记录下你的操作过程。
因此借助宏操作,可以很轻松地实现某一功能,并把这些代码稍作修改嵌入到你的软件中。
但是VBA也存在一个缺点,它必须有Microsoft Office作平台,在哪里编写,必须在哪里执行。
例如在Excel下编写的一段VBA代码,则它只有在Excel下才能运行。
因此,笔者的方法就是把VBA代码嵌入到Delphi中,从而实现用Delphi操作Excel。
下面,我们以Delphi程序为例,说明这种调用方法:Unit excel;interfaceusesWindows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs, StdCtrls,ComObj;//ComObj是操作OLE对象的函数集type TForm1 =class(TForm)Button1: TButton;procedure Button1Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);vareclApp,WorkBook:Variant;//声明为OLE Automation 对象xlsFileName:string;beginxlsFileName:=‘ex.xls‘;try//创建OLE对象Excel Application与 WorkBookeclApp:=CreateOleObject(‘Excel.Application‘);WorkBook:=CreateOleobject(‘Excel.Sheet‘);exceptShowMessage(‘您的机器里未安装Microsoft Excel。
Delphi实现Excel报表步骤与技巧
林豫柏;罗键
【期刊名称】《智能计算机与应用》
【年(卷),期】2005(000)003
【摘要】介绍Delphi通过OLE技术实现Excel报表基本步骤和一些技巧.
【总页数】2页(P62-63)
【作者】林豫柏;罗键
【作者单位】厦门大学;厦门大学
【正文语种】中文
【中图分类】TP3
【相关文献】
1.Delphi编程实现Excel报表自动生成和发布 [J], 冷建功;赵健
2.动态表和索引在Delphi中的实现技巧 [J], 申雪琴;祁昌平
3.对对碰游戏在DELPHI下的实现与技巧 [J], 黄复贤
4.在Delphi中如何选择字段动态生成Excel报表 [J], 刘迎春;吕翠萍
5.用Delphi和VBA制作Excel报表 [J], 于瑞甫;华钢
因版权原因,仅展示原文概要,查看原文内容请购买。
交叉报表一、工具Ireport 4.5二、制作过程1、新建一个文件图2-1 2、配置数据源图2-23、在Summary中添加一个Crosstab组件(如图)注意Crosstab只能在Summary中添加图2-33、设置数据源为主表数据,然后下一步图2-44、设置行显示字段,然后下一步。
图2-5 5、设置行显示字段图2-6其中行列显示字段可以根据自己需求设置Group2或者Group3等。
6、设置表格主体数据,(这里只能添加一个字段,如需添加更多数据请在交叉列表创建完成之后,在ReportInspector中找到交叉报表的measures,然后右键点击添加)图2-8图2-97、设置交叉列表样式图2-108、对主体交叉报表进行设计(和主表一样)。
设计图见图2-11,预览效果见图2-12。
图2-11图2-12表中数据设计详见第6点。
9、交叉报表的排序在ireport4.5中,交叉报表的排序默认为按首字母排序,如图2-12我们可以看到月份是排序并不是顺序的。
这是我们可以在SQL语句上动些手脚,在查询的结果给它的第一位加上字母ABC…如图2-13图2-13这样预览结果就变成了图2-14图2-14可以看到其实这也不是我们想要的结果,然后我们可以点击月份进行字段展现控制。
如图2-15图2-15然后进入Text file Expression设置,如图2-16图2-16 预览结果如图2-17图2-17 10、交叉报表排序(2)元素(row / column groups)默认是按照ASCII码排序,除此之外它还有一个Comparator exp。
(要求是parator的实现类),步骤1、可以通过实现parator 接口,自己写个比较类:package com.junefsh.utils;import parator;public class JsReportComparator implements Comparator<Object> { public int compare(Object o1, Object o2) {}}其中注意的是compare()方法需要根据自己的需求实现,该方法主要比较的是row/column groups 中的bucket expression 。
怎么利用Excel实现动态数据表格数据较多的时,一页一页的翻动更是麻烦。
如果可以通过修改Excel设置,让数据能在一张表格中自己动起来岂不是很方便?以下是店铺为您带来的关于利用Excel实现动态数据表格,希望对您有所帮助。
利用Excel实现动态数据表格打开Excel,在要制作成动态数据表格的页面上切换选项卡到开发工具(如没有开发工具,请点击Excel文件—选项—自定义功能区,右侧勾选开发工具即可),选择“插入”表单控件中的滚动条。
右键单击滚动条,选择设置控件格式。
切换选项卡到“控制”一项修改单元格链接。
比如我们选中的是E9这个空白单元格。
(点击单元格链接后的小图标可以直接选择单元格) 按下Ctrl+F3打开名称管理器,这里略复杂。
弹出的窗口是新建自定义名称,第一个比如叫日期,就输入=OFFSET(Sheet1!$A$1,Sheet1!$E$9,,5)。
第二个比如叫数据,一样输入=OFFSET(Sheet1!$B$1,Sheet1!$E$9,,5)。
实际上就是这两个名称的位置定位。
这里的意思是,OFFSET函数的行偏移量由E9单元格指定,而E6单元格则由滚动条控件来控制,这样每单击一次滚动条,OFFSET函数的行偏移量就会发生变化。
现在开始制作图表,在Excel界面选择“插入”选项卡,找到折线图的小图标(在推荐的图表附近),点击选择一个折线图。
在刚刚建立的图表数据上右键单击,选择“选择数据”。
在选择数据源中分别编辑左侧图列项(系列)和水平(分类)轴标签,分别对应之前修改自定义名称(日期、数据)。
最后,再根据实际需求,修改图表高度、单元格高度,并辅以底色之类的美化工作。
最终,我们就能依靠滚动条让图标数据动起来,实现动态数据浏览啦。
这样看起来是不是有趣多了?。
如何在VBA中处理Excel的动态图表和数据透视表在Excel中,动态图表和数据透视表是非常强大的工具,可用于可视化和分析数据。
通过使用Visual Basic for Applications(VBA),我们可以进一步增强这些工具的功能。
本文将介绍如何在VBA中处理Excel的动态图表和数据透视表。
动态图表是可以根据数据的变化而自动更新的图表。
在VBA中,我们可以通过使用宏来创建和控制动态图表。
首先,我们需要选择一个数据区域作为图表的数据源。
然后,使用VBA代码创建一个新的图表对象,并将数据源绑定到图表中。
在图表对象创建后,我们可以使用VBA代码来更改图表的样式、布局和数据范围。
例如,我们可以使用VBA代码添加数据系列、设置坐标轴标签、更改图表类型等。
最后,我们可以使用VBA代码监视数据的变化,并在数据发生变化时更新图表。
以下是一个示例代码,演示了如何使用VBA创建一个简单的动态图表:```Sub CreateDynamicChart()Dim DataRange As RangeDim ChartObject As ChartObject' 选择数据源Set DataRange = Worksheets("Sheet1").Range("A1:B5")' 创建图表对象Set ChartObject = Worksheets("Sheet1").ChartObjects.Add(Left:=100,Width:=400, Top:=100, Height:=300)' 设置图表的数据源ChartObject.Chart.SetSourceData Source:=DataRange' 更改图表样式和布局ChartObject.Chart.ChartStyle = 3ChartObject.Chart.ChartTitle.Caption = "Dynamic Chart"' 添加数据系列ChartObject.Chart.SeriesCollection.NewSeriesChartObject.Chart.SeriesCollection(1).Values = DataRange.Columns(2) ChartObject.Chart.SeriesCollection(1).XValues = DataRange.Columns(1) ' 监视数据的变化并更新图表Application.OnEntryChange Target:=DataRange,Procedure:="UpdateDynamicChart"End SubSub UpdateDynamicChart()Dim ChartObject As ChartObject' 获取图表对象Set ChartObject = Worksheets("Sheet1").ChartObjects("Chart 1")' 更新图表ChartObject.Chart.RefreshEnd Sub```数据透视表是一种可以从大量数据中提取关键信息的强大工具。
OLE⾃动化是Windows应⽤程序之间互相操纵的⼀种技巧。
被操纵的⼀⽅称为⾃动化服务器(也称⾃动化对象),典型的⾃动化服务器有Microsoft Word、Excel和PowERPoint。
操纵⾃动化服务器的⼀⽅称为⾃动化控制器。
在开发数据库应有程序中,经常需要借助Microsoft Excel的强⼤报表功能,把数据库中的数据输出到Excel表格中。
Delphi 5.0以前的版本虽然也可以编写⾃动化控制器和⾃动化服务器,但编写程序较为复杂,不易掌握。
Delphi 5.0对于OLE提供了强⼤的⽀持,利⽤Delphi 5.0最新提供的Servers栏控件可以很容易开发OLE⾃动化控制器实现对OLE⾃动化服务器的调⽤,发挥Word、Excel、Powerpoint的强⼤功能。
下⾯给出⼀利⽤Delphi 5.0开发OLE⾃动化控制器操纵Excel的实例,希望对⽤Delphi开发OLE应⽤程序的编程⼈员有所帮助。
⾸先新建⼀Application,然后在Form1上放置Servers栏控件ExcelApplication1、 ExcelWorkbook1、ExcelWorksheet1,再放置控件Table1、 Datasource1、Dbgrid1、 Button1、 Button2、 Button3、 Button4,并设置Table1.databasename:=dbdemos,Table1.TableName:=Country.db,Table1.active:=True, Button1.Caption:='SaveToExcel',Button2.caption:='PrintPreview',Button3.caption:='Print',Button4.caption:='CloseExcel'。
代码如下:unit Unit1;interfaceusesWindows, Messages, SysUtils, Classes,Graphics, Controls,Forms, Dialogs, Excel97, OleServer, Db, DBTables,Grids, DBGrids, StdCtrls;typeTForm1 = class(TForm)ExcelApplication1: TExcelApplication;ExcelWorkbook1: TExcelWorkbook;ExcelWorksheet1: TExcelWorksheet;Table1: TTable;Table1Name: TStringField;Table1Capital: TStringField;Table1Continent: TStringField;Table1Area: TFloatField;Table1Population: TFloatField;button1: TButton;DataSource1: TDataSource;DBGrid1: TDBGrid;Button2: TButton;Button3: TButton;Button4: TButton;procedure button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Button3Click(Sender: TObject);procedure Button4Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;implementation{$R *.DFM}procedure TForm1.button1Click(Sender: TObject);vari,row,column:integer;beginTryExcelApplication1.Connect;ExceptMessageDlg('Excel may not be installed', mtError, [mbOk], 0);Abort;End;ExcelApplication1.Visible[0]:=True; ExcelApplication1.Caption:='Excel Application'; ExcelApplication1.Workbooks.Add(Null,0); ExcelWorkbook1.ConnectTo (ExcelApplication1.Workbooks[1]); ExcelWorksheet1.ConnectTo (ExcelWorkbook1.Worksheets[1] as _Worksheet); Table1.Open;row:=1;While Not(Table1.Eof) dobegincolumn:=1;for i:=1 to Table1.FieldCount dobeginExcelWorksheet1.Cells.Item[row,column]:=Table1.fields[i-1].AsString;column:=column+1;end;Table1.Next;row:=row+1;end;end;procedure TForm1.Button2Click(Sender: TObject); beginExcelWorksheet1.PrintPreview;end;procedure TForm1.Button3Click(Sender: TObject); beginExcelWorksheet1.PrintOut;end;procedure TForm1.Button4Click(Sender: TObject); beginExcelApplication1.Disconnect; ExcelApplication1.Quit;end;end. 本程序在Delphi 5.0下调试通过。
Delphi中调用Excel制作报表的方法
蒋丽华;雷佳兵
【期刊名称】《智能计算机与应用》
【年(卷),期】2007(000)001
【摘要】介绍了在Delphi中利用OLE自动化技术调用Excel对象制作报表的方法,并结合具体实例,给出了实现源代码.
【总页数】2页(P61-62)
【作者】蒋丽华;雷佳兵
【作者单位】不详;武汉工业学院计算机与信息工程系讲师,430023
【正文语种】中文
【中图分类】TP311.52
【相关文献】
1.在Delphi 5中调用Excel [J], 惠恩刚
2.用Delphi和VBA制作Excel报表 [J], 于瑞甫;华钢
3.PowerBuilder中调用Excel制作复杂报表的方法 [J], 邹运兰;张怡芳
4.基于Delphi+Excel 2000制作复杂报表 [J], 曹芝兰;王汉江
5.Delphi中调用和编辑Excel的实现 [J], 田一源;姚博
因版权原因,仅展示原文概要,查看原文内容请购买。