Delphi与xcel的亲密接触.docVIP

  • 4
  • 0
  • 约2.69万字
  • 约 16页
  • 2016-10-09 发布于广东
  • 举报
Delphi与xcel的亲密接触

? Delphi与Excel的亲密接触??????? ???? ?   Delphi作为一个出色的RAD,强大的数据库功能是其最重要的特色之一,但是操纵困难的QuickReport控件常常不能满足数据库报表的需要。如果你的报表非常复杂,或者要求灵活地改变格式,那么使用Excel作为报表服务器是一个不错的选择。Delphi从版本5开始提供的Excel组件极大地简化了OLE自动化技术的应用。不过缺漏多多的帮助文件一直是Delphi最令人诟病的地方,这些新组件也不例外,本文试图对此作一较详细地介绍。 ? ? Excel的对象模型是一个树状的层次结构,根是应用程序本身,工作簿WorkBook是根对象的属性对象,本文主要讨论的用于数据交换的WorkSheet则是工作簿的属性对象,详情参阅MSOffice提供的Excel ? VBA帮助文件。在Delphi中控制Excel首先要与服务器程序建立连接,打开工作簿,然后与目标工作表交换数据,最后断开连接。 ? ? ? ? 打开Excel工作簿 ? ?   我们的例子从一个带有TStringGrid(当然要填上一些数据)和两个按钮的主窗体开始,从控制面板的Servers页签中拖一个TExcelApplication控件放到窗体上。首先把ConnectKind设为ckRunningOrNew,表示如果能够检测到运行的Excel实例则与其建立联系,否则启动Excel。另外,如果希望程序一运行即与服务器程序建立联系,可以把AutoConnect属性设为True。 ? ? 与Excel建立联系只要一条语句就可以了:?? ? Excel ? . ? Connect; ? ? 也许你已经注意到Servers页签上还有其他几个Excel控件,这些控件通过ConnectTo方法可以与前面的Excel联系在一起: ? ? ExcelWorkbook1.ConnectTo(Excel ? . ? ActiveWorkbook); ? ? ExcelWorksheet1.ConnectTo(Excel ? . ? ActiveSheet ? as ? _Worksheet); ? ? ExcelWorksheet2.ConnectTo(Excel ? . ? Worksheets.Item[Sheet2] ? as ? _Worksheet); ? ? 要注意,使用ConnectTo方法前必须先打开相应的工作簿或工作表,另外这些控件在多数情况下并不会带来额外的便利,因此最好只使用一个TExcelApplication。 ? ? 一旦与Excel服务器建立联系,就可以创建新的工作簿: ? ? var ? ? wkBook ? : ? _WorkBook; ? ? LCID ? : ? Integer; ? ? ... ? ? LCID ? := ? GetUserDefaultLCID(); ? ? ? wkBook ? := ? Excel.Workbooks.Add(EmptyParam, ? LCID); ? ? ? Add函数的第一个参数用于定义新建工作簿所使用的模板,可以使用xlWBATChart、xlWBATExcel4IntlMacroSheet、 ? xlWBATExcel4MacroSheet或者xlWBATWorksheet常量,也可以是已有的xls文件名。这里的EmptyParam是Variants单元与定义的变量,表示使用默认的通用模板创建新工作簿。 ? ? 如果打开已有的xls文档,则应把要打开的文件名作为第一个参数传递给Open函数: ? ? wkBook:=Excel.WorkBooks.Open(edtDesFile.text,EmptyParam,EmptyParam, ? ? EmptyParam,EmptyParam,EmptyParam,EmptyParam, ? ? EmptyParam,EmptyParam,EmptyParam,EmptyParam, ? ? EmptyParam,EmptyParam,LCID); ? ? 要知道,所有的数据操作主要是针对活动工作表而言的,下面的语句使用一个_WorkSheet变量代表当前的活动单元格。如果知道工作表的名称,其中的索引号可以用工作表名代替: ? ? wkSheet:=wkBook.Sheets[1] ? as ? _WorkSheet; ? ? 完成数据交换后需要保存工作簿: ? ? Excel.ActiveWorkBook.SaveAs ? (MyOutput, ? EmptyParam,EmptyParam, ? ? EmptyParam, ? EmptyParam, ? EmptyParam, ? ? EmptyPar

文档评论(0)

1亿VIP精品文档

相关文档