网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
Delphi和Excel的亲密接触
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式
属性。
Cells是单元格的集合,如果没有指定具体位置可以代表整个工作表的所有单元格,但一般使用它是为了引用某个具体的单元格,比如WS.Cells.Item[1,1]就表示最左上角的单元格A1,注意在VBA中Item是Cells的默认属性可以省略,但在Delphi中就没有这种便利了。
为单元格赋值要引用其Value属性,不言而喻,该属性是一个Variant变量,例如: wkSheet.Cells.Item[1, 1].Value := ''通讯录'';
当然你也可以为单元格指定公式: var AFormula:String;
…… AFormula:=''=Rand()'';
wkSheet.Range[''F3'',''G6''].Value:=AFormula;
上面的方法非常直接简单,但是速度非常慢,不适合作大型报表。
那么能不能把所有的数据依次传递给Excel呢?我们可以使用Range,这个对象代表工作表中的一个区域,象我们用鼠标拖出的那样,一般是一个矩形区域,只要给定其左上角和右下角单元格的位置就可以了,如Range[‘C3’,’J42’]。
这里还有一个小问题,因为如果数据超出26列(比如有100列)或者需要在运行中确定目标区域范围的话,使用字符名称标记单元格就比较麻烦。
回想一下,既然“C3”是单元格的标记,那么我们当然也可以使用Cells,比如Range[Cells.Item[1,1], Cells.Item[100,100]]。
可以想象,Range的值应该是数组,但是绝对不能用Delphi中的Array给它赋值!要记住,在Delphi中,Excel对象的值总是Variant类型的。
var Datas.Variant;
Ir, ic: Integer;
…… Datas:= varArrayCreate([1,ir,1,ic],varVariant);
//这里创建100*100的动态数组 …… //这里为数组元素赋值 with wkSheet do Range[cells.Item[3,1],cells.Item[ir+2,ic]].Value:=Datas;
要注意,工作表与Range都有Cells属性,为了明确起见,这里使用了with语句。
此外,Range是有方向性的,用VarArrayCreate建立的一维数组只能赋给单行的Range,如果要为单列的Range定义值,必须使用二维数组,比如: Datas:=VarArrayCreate([1,100,1,1], varVariant);//创建100*1的动态数组。
顺便提一下,Cells.Item实际上返回的也是Range对象。
从工作表中取回数据基本上是写数据的逆过程,稍微需要注意的是如何确定工作表的数据范围: var ir, ic.Integer;
…… wkSheet.Cells.SpecialCells(xlCellTypeLastCell,EmptyParam).Activate;
ir := Excel.ActiveCell.Row;
ic := Excel.ActiveCell.Column;
这里巧妙地利用特殊单元格函数SpecialCells取得包含数据的最后一个单元格。
数据编辑下面是数据编辑的两个例子。
var DestRange: OleVariant;
begin DestRange := Excel.Range[''C1'', ''D4''];
Excel.Range[''A1'', ''B4''].Copy(DestRange);
上面的例子复制了8个单元格的内容。
如果给Copy函数传递一个空参数,则该区域的数据被复制到剪贴板,以后可以用Paste方法粘贴到别的位置。
var WS: _Worksheet;
…… Excel.Range[''A1'', ''B4''].Copy(EmptyParam);
//在一个工作表中复制数据到剪贴板 WS := Excel.Activesheet as _Worksheet;
//改变活动工作表 WS.Range[''C1'', ''D4''].Select;
WS.Paste(EmptyParam, EmptyParam, lcid);
//把剪贴板中的内容粘贴到新的工作表中 格式设置选择Excel作为报表服务器主要是因为它强大的格式化能力。
我们首先把标题“通讯录”进行单元格合并,居中显示,然后修改字体为18磅的“隶书”,粗体: with wkSheet.Range[''A1'',''D1''],Font do begin Merge(True);
//合并单元格 HorizontalAlignment:= xlCenter;
Size:=18;
Name:=''隶书'';
FontStyle:=Bold;
end;
如果单元格内容较长,将有部分内容无法显示,通常的做法是双击选定区域右侧的边线是各列的宽度自动适应内容的长度。
在Delphi中通过AutoFit方法也可实现自适应的列宽行高,需要注意的是该方法仅能用于整行整
  • 上一篇资讯: Delphi控制Excel2000
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号