搬家第42天-citect2018应用cicode和citectVBA制作报表3:将microsoftdatagrid数据导出到excel文件

前面的博客记录了数据记录,数据查询等功能如何实现,条件查询数据后,可能需要导出到excel文件便于打印。这个需求可以通过citectVBA脚本实现,我在练习这个功能时,由于对microsoft datagrid控件不够了解,还是费了些功夫的。
microsoft datagrid控件有几个重要的属性:
visiblerows、visiblecols、row、col、firstrow、text
VisibleRows指的是一屏可见的行数。比如数据量大,有1000行记录,但是microsoft datagrid控件一屏显示不完全,后面的数据需要通过拖拽竖直滚动条来显示,VisibleRows就是说不拖拽竖直滚动条的时候,可以显示多少条记录。
VisibleCols指的是不拖拽水平滚动条时候可以显示的字段数量。
row表示当前的行序号,需要注意的是,这个行序号指的是在当前这一屏数据中的序号。比如一共有1000条记录,一屏只能显示100条,那么默认第200条记录是看不到的,拖拽数值滚动条让这一条记录出现在屏幕中时,它的row数值不是200,而是根据当前在屏幕中的位置,从最上面一行数,是第几行。每一屏数据最上面一行是第0行,这个需要注意,不然定位会出现问题。
col表示当前的列序号,同样的,这是指在当前屏显示上从最左边数第几列,col数据从0开始
firstrow表示当前屏幕最上面一行对于全体数据来讲是第几行,注意这个从1开始计数,这个属性可以实现准确的将某一行滚动到最上面,在本次练习中需要用到。当一屏显示的数据条数少于或者党羽visiblerows时,不能实现竖直滚动条继续下滚数据上移了,此时firstrow数值不能继续增大了。
在导出数据的操作中,如果到处的数据量大,需要先是一个进度情况,避免出现不明情况的等待。进度条这时候需要发挥作用。
导出到excel后,excel需要自动排版,字体、合并单元格、对齐情况、表格线设置、保存数据都需要自动完成。其中表格线需要注意,在vb或者vba中,表格线的位置、表格线的种类都是系统变量,但是这些系统变量在citectVBA中不能自动识别出来,要用这些变量对应的数值。
'边框boders属性xlBodersIndex有以下成员:
xlDiagonalDown 数值是5,从区域中每个单元格的左上角到右下角的边框
xlDiagonalUp  数值是6 ,从区域中每个单元格的左下角到右上角的边框
xlEdgeBottom 数值是9,区域底部的边框
xlEdgeLeft 数值是7,区域左边的边框
xlEdgeRight 数值是10,区域右边的边框
xlEdgeTop 数值是8,区域顶部的边框
xlInsideHorizontal 数值是12,区域内部单元格水平边框
xlInsideVertical 数值是11,区域内部单元格垂直边框
 
'边框的线型XlLineStyle有以下成员:
xlContinuous,数值1,实线
xlDash,数值-4115,虚线
xlDashDot,数值4,点划相间线
xlDashDotDot,数值5,双点划相间线
xlDot,数值-4118,点式线
xlDouble,数值-4119,双线
xlLineStyleNone,数值-4142,无线
xlSlantDashDotxlLineStyle,数值13,倾斜的划线
 
这些属性可以从微软官网MSDN得到,其他的诸如颜色、字体、字号、字的颜色、背景色等,都可以参考MSDN。需要对这些属性设置时,先将这一区域选中,也就是.select,然后对selection的属性进行设置。
 
 
新建一个citectVBA脚本如下:
这里面有三方面编程消耗了我较多时间:
1. 为了逐行逐列读取所有的数值,如何使microsoft datagrid控件滚屏,有点肥神。
2. 对excel操作边框线、对齐排版。
3. 写数据和排版完成后保存和彻底关闭excel进程。
 
posted @ 2021-03-11 08:38  来自金沙江的小鱼  阅读(416)  评论(0编辑  收藏  举报