APP下载

基于C#的Excel-VBA编程批量数据表格设计与实现

2018-02-23王大龙张慧娟

电子技术与软件工程 2018年6期

王大龙 张慧娟

摘要 本文设计并实现了以C#软件为平台,采用Excel-VBA编程技术进行批量数据的表格输出。

【关键词】飞航试验 跟踪测量数据 Excel软件

当前飞航试验数据处理软件主要采用C#语言编写。C#语言提供了一种编写Windows平台上几乎任何类型的软件或组件的方式,对编写程序的方式进行了革新,更易于实现在Windows上编程。采用C#语言进行软件开发,软件的通用和后期维护具有无可比拟的巨大优势。Excel是微软公司开发的Office办公系列软件中专用于表格数据处理的,对于统计数据的处理非常高效,以其强大的功能和友好的用户界面而受到广泛的应用。通过c#软件实现基于Excel-VBA编程技术的数据表格的高效输出,一方面能充分利用Excel软件强大的数据处理能力,对庞大的数据进行统计、分析和比对,在保证数据高效处理的前提下,根据处理要求实现数据的初步分析统计。另一方面直观的表格输出,也有助于操作人员进行信息和数据管理,直接提高了数据处理效率。因此有必要讨论有效可行的方法来实现C#软件基于Excel-VBA编程技术的数据表格输出。

1 飞航试验测量设备跟踪数据

飞航试验航程不断增加,各类型测量设备记录了大量的跟踪测量数据。在事后数据处理开始之前,有必要对测量数据进行初步的分析统计,把握数据状态,为后续数据处理方案的制定提供可靠依据。飞航试验测量设备种类繁多,不同跟踪设备具有不同的工作原理与特性,记录的数据类型也不尽相同。光学经纬仪具有高精度的测角测元,但缺少测距信息,无法实现单站目标定位,同一时刻需要2台或以上的设备才能完成对飞航目标的定位。连续波雷达能实现对目标测距测速的高精度测量,但也需要多台设备才能保证对目标的精确定位。后续的目标定位数据融合,数据处理人员必须要从庞大的数据中提取相关信息,才能制定正确合理的数据处理方案,减少后续处理的反复过程,提高处理效率。将数据以Excel文档的形式来存储有利于数据的共享和传输,数据信息的交流更加便利,Excel软件提供了大量的数据统计与分析功能,通过直观统计表格将信息呈现在数据处理人员面前,能更好的满足处理需求。

2 数据文件导入的原则与方法

Excel是办公中常用的电子表格处理工具,在信息系统中被广泛使用。在测量数据处理这一类型的信息分析系统中,报表十分重要。比如系统误差修正、目标定位结果、精度分析等都采用报表形式。Excel文件具有工作表(Worksheet)、行(Row)、列(Column)、单元格(Cell)的结构,文件有多个工作表,这种结构很容易建立与复杂结构数据的对应关系。Excel文件可被认为是一个数据库,但不具备像SQL服务器查询或存储的小型数据库的功能。采用Microsoft的数据库引擎连接Excel文件,即可像SQL服务器数据库引擎一样对数据更新和查询。

导入原则。一是一次导入同一类型的数据,应将不同类型的数据导入到类别中,如测元数据方位角、俯仰角数据放置在各自类别中。二是数据源应与目标一致。导入方法和步骤:找到对应的源文件;检索数据源文件的列表;准备目标数据基础;生成导入新记录。

3 实现

本实验将从SQL服务器数据库中,根据需要将数据选择性地读取一些必需的字段,写入Excel数据文件实现数据导入过程。

编程如下:

private void buttonDataIn_Click(objectsender,EvenrArgs e) //buttonDataln点击操作

stringconnSqlString=………………………;//数据检索字符串

//利用FileDialog控件选择文件

System.Windows.FormsOpenFileDialogfileinformation=newOpenFileDialog()

if (fileinformation.ShowDialog()==DialogResult.OK)

Trans ferData(fileinfo rmation.FileName,”TableSheet”,connSqlString);//TableSheer表名

/TransferData函数完成数据导入

public void TransferData(stringexcelFileName, string shtName, stringconnecrionString)

DataSetdatasfSheet= new DaraSet()∥定義新数据集

try

stringstrConnection=”Provider=MicrosoftJet.OLEDB.4.0;"&

”Data Source=”&excelFileName&”:”&”Extended Properties=Excel 8.0;”

OleDbConnection conn - newOleDbConnection(strC,onnection)

strConnection.Open()

string strSqIExcel=“”//strSqlExcel字符串赋为空

OleDbDataAdaptermyReq= null

strSqIExcel= string.Format(”select * from[{0)$]” sb cName)//查询语句

myReq= new OleDbDataAdapter(strExcel,strConnection)

myReq.Fill(darasfSheet, shtName)

string strSqlCreat= string.Format("ifobject_id({O)) is null create table{0)(”,shtName)

foreach (System.Data.DataColumn c indatas fSheet.Tables [O].Columns)

strSqlCreat+=string.Format("[{O}]varchar(255),”,c.ColumnName)

srrSqlCreat= strSql.Trim(',)+”)”//目标表不存在则创建表

using (System.Data.SqlC,lientSqlConnectionsqlconnection=

New System.Data.SqIClient.SqIConnection(connectionString》

sqlconnection.Open()

System.Dara.S qlClient.S qlC ommandcommand= sqlconnection.CreateCommand()

command.CommandText= strSqlCreat

command.ExecuteNonQuery()

sqlconnection.Close()

//導入数据

using (System.Data.SqlC,lientSqlBulkCopyScopy=

New System.Data.SqIClientSqlBulkCopy(connectionString》

Scopy.SqlRowsC,opied+=

New System.Data.SqlClientS qlRowsC opiedEventHandler( ScopySqlRowsCopied)

Scopy.BatchSize= 800;//每次传输的行数

Scopy.NotifyAfter= 800;//进度提示的行数

Scopy.DestinationTableName二shtName;//目标表

Scopy.WriteToServer(ds.Tables[0])

catch (Exception ex)∥错误信息

System.Windows.Forms.MessageBox.Show(ex.Message)

通过编程实现了数据的快速输出。

4 结论

基于C#软件采用Excel-VBA编程技术实现数据的表格输出,能够帮助数据处理人员从大量的数据当中精确高效的获得期望的数据信息,Excel强大的数据分析与直观丰富的报表功能为操作人员提供了多样的展示方式,可以根据需求,遵循VBA环境下的实验原理和方法,预先编制显示模板,以满足不同的需求,可广泛应用在数据管理、分析与处理领域。

参考文献

[1]苏庆,李忠良,吴伟民.在C#. NET下实现数据导入Excel的方法研究[J].计算机与现代化,2011(04): 29-31.

[2]周虎.基于C#的Excel数据批量导入SqlServer的方法研究与实现[J].软件工程师,2014 (17): 54-56.