APP下载

用VB调用Excel实现SPD表自动编制

2014-04-29刘红坤孟德东王小丽

计算机时代 2014年1期

刘红坤 孟德东 王小丽

摘 要: 检测电涌保护器(Surge Protection Device,SPD)时,采集到的批量数据需要自动表格化,针对此问题,提出了在Visual Basic(简称VB)环境下调用Excel对象编程实现自动制SPD表的方法。分析了VB调用Excel的理论依据和步骤,阐述了自动绘制SPD表的主要设计思想,剖析了自动绘制SPD表的关键技术。实践证明,此方法可行且有效。

关键词: SPD; VB; Excel; 自动制表

中图分类号:TP399 文献标志码:A 文章编号:1006-8228(2014)01-42-02

0 引言

VB是Windows应用程序强有力的开发工具,具有强大的数据处理功能,但VB的报表功能比较弱。而Excel的表格生成功能十分强大且便利,是一个强有力的信息分析与处理工具,又因为Excel的应用程序对象是外部可创建对象,所以可以用VB应用程序来操作Excel,通过两者结合,能够快速、简便地生成复杂的表格。本文通过自动生成SPD表的实例来说明VB控制Excel的具体过程,实现海量的SPD检测数据类型表的形成[1-2]。

1 Excel对象模型

为了在VB应用程序中调用Excel,必须要了解Excel对象模型。Excel对象模型描述了Excel的理论结构,所提供的对象很多,例如:透视表、图表等对象,下面将对VB调用Excel的最重要且常用对象作简要介绍[2-4]。

⑴ Application对象

Application对象是Excel对象模型的顶层,表示整个Excel应用程序。在VB应用程序中调用Excel,就是使用Application对象的方法、属性和事件。

⑵ Workbook 对象

Workbook对象直接隶属于Application对象的下层,表示一个Excel工作薄文件。Workbook对象的集合构成Workbooks对象。可以通过Workbooks集合或表示当前活动工作薄的Active Workbook对象访问Workbook对象。

⑶ Worksheet对象

Worksheet对象包含于Workbook对象中,表示一个Excel工作表。可以通过Worksheets集合来访问、激活、增加、删除、更名工作表。

⑷ Range对象

Range对象代表工作表的某一个或多个单元格、某一选定区域等。

⑸ Cells对象

Cells对象包含于Worksheet對象中,表示Excel工作表中的一个单元格。

2 在VB编程环境中调用Excel对象

2.1 在VB中添加对Excel类型库的引用

为了使VB应用程序能够访问Excel提供的类型库,需要设置对Excel类型库的引用,在VB6的“工程菜单中选择“引用”,在对话框中选中“Microsoft Excel 10.0 Object Library”,单击“确定”按钮即可。

2.2 在VB中声明各对象

为了能对Excel操作,用VB编程时首先应对Excel及其工作薄、工作表等对象进行声明。声明如下:

Dim biaoapp As Excel.Application 'Excel对象

Dim biaobook As Excel.Workbook '工作簿

Dim biaosheet As Excel.Worksheet '工作表

2.3 在VB中使用对象变量创建Excel对象的引用

在声明对象变量之后,可用CreateObject函数或GetObject函数给变量赋值或引用已存在的Appliction对象。

Set biaoapp=CreateObject("Excel.Application") '创建Excel对象

Set biaobook=biaoapp.Workbooks.Add

Set biaosheet=biaobook.Worksheets(1)

将对象引用赋予变量后,就可以在VB程序中使用Excel对象的方法和属性了,根据需要对Excel对象进行各种操作。

2.4 关闭Excel,释放引用对象

在VB程序中创建完对象引用后,使用对象的方法、属性和事件后,应该从内存中释放该对象,通过以下语句来实现:

biaoapp.Quit '结束Excel对象

biaoapp.Workbooks.Close

Set biaoapp=Nothing

Set biaobook=Nothing

Set biaosheet=Nothing

3 VB调用Excel自动制表的设计思想

在SPD的实验检测中,需要采集SPD的常规参数和电参数数据。当有批量的SPD需要检测时,采用人工记录大量数据的方式,若采集结果散乱无头绪,将会对下一步的数据处理分析工作带来极大的不便。如果采用自动生成表格的方式分类记录数据,使格式统一,明了清晰,则可以快速检索出所需数据并进行加工处理。还可根据需求将采集到的数据以数据库的形式存储,再从库中查询到所需数据,自动生成数据电子表格。

Microsoft公司的表格处理软件Excel,在表格方面有强大的功能,但需要人工编辑、操作才能完成表格的制作。而VB的可扩展性,使调用Excel很方便。因此我们可通过VB6编程直接控制Excel的程序,从而实现自动制表的功能。VB6.0以上版本提供了Excel对象,利用它可将数据库直接导入Excel工作薄中,然后编程操作,最后输出所需格式的表格。

4 实例说明用VB调用Excel完成自动制表的关键技术

4.1 设置SPD常规参数表

在SPD检测中,必需记录SPD标称放电电流、最大放电电流、最大持续工作电压、电压保护水平等参数值,因不同型号的SPD上述参数值各异,因此有必要设置SPD常规参数表。代码如下:

……

u=1 '定义初始行

v=1

For biaoline=u To u+1

h=1

biaosheet.Rows(biaoline).RowHeight=25 '定义行高

For biaocolu=v To v+6

With biaosheet

.Range(.Cells(biaoline,h), .Cells(biaoline,h+1))

.MergeCells()=True

'每2个单元格合并为一个

.Range(.Cells(biaoline,h), .Cells(biaoline,h+1))

.Borders.LineStyle=1

'设置表框为细实线

If biaoline=u Then

.Range(.Cells(biaoline,h), .Cells(biaoline,h+1))

.Value=title(biaocolu-1)

End If

End With

h=h+2

Next biaocolu

Next biaoline

u=u+page '定义下一页SPD表的起始行

……

4.2 设置SPD电参数表

在SPD检测中,还需要记录SPD的电压、电流等电参数,不同的SPD电参数是不同的,一个SPD由不同组小模块构成,小模块电参数也不同。因此很有必要设置SPD电参数表。设置关键代码如下:

……

For x=starpos To firstpage

For i=starline To starline+3 '小表格的行数

biaosheet.Rows(i).RowHeight=25

For j=a To a+1 '小表格的列数

biaosheet.Columns(j).ColumnWidth=6 '设置列宽

With biaosheet

.Range(.Cells(i,j), .Cells(i,j)).Borders.LineStyle=xlContinuous

'設置边框为是实线

End With

Next j

biaosheet.Columns(a+2).ColumnWidth=0.8 '设置间隔列宽

Next i

a=a+3

r=x Mod 6

If r=0 Then starline=starline+5

If r=0 Then a=1

Next x

starline=starline+3

……

4.3 打印及预览

借助预览及打印生成所需要的工作表后,就可以对Excel发出预览、打印指令[5]。代码如下:

……

'设置表的页边距

biaosheet.PageSetup.LeftMargin=1.5/0.035

biaosheet.PageSetup.RightMargin=1#/0.035

biaosheet.PageSetup.TopMargin=1/0.035

biaosheet.PageSetup.BottomMargin=1.5/0.035

'打印表格

biaosheet.PrintPreview

biaosheet.PrintOut

……

5 结束语

本文论述了VB编程语言与Excel表格处理软件相结合的方法,成功地解决了VB在自动绘制表格方面编程难度较大,效率不高的问题。该方法通过在SPD表格设计实例中的应用,充分体现了VB调用Excel设计表格的灵活性,减少了手工设计表格的繁琐过程,减轻了繁重的工作,避免了重复性的工作,实现了SPD复杂表格的自动输出功能。在实际工作应用中,尤其对SPD批量数据处理时,对于大量SPD数据表格的自动设计、输出,将大大提高工作效率,因此利用VB和Excel结合来制作SPD表是一种简单、经济又高效的解决方案。

在实际应用中我们发现,自动生成测试数据的电子表和防雷管理平台还需要衔接起来,即:将测试SPD的数据结果自动导入防雷管理平台,这个问题有待于进一步研究解决。

参考文献:

[1] 明日科技编著.Visual Basic从入门到精通(第3版)[M].清华大学出版

社,2012.

[2] 刘永志,陈学煌,段新文.VB调用EXCEL实现报表打印功能[J].甘肃

科技,2005.21(7):84

[3] 刘东.VB控制EXCEL生成报表[J].宜宾学院学报,2005.12:73

[4] 杨元法.VB访问Excel的几种方式[J].Computer Era,2002.10:34

[5] 魏彩乔,王晓光,焦满囤.基于VB和EXCEL的复杂数据报表输出[J].

华北航天工业学院学报,2005.15(1):7