王大龍 張慧娟
摘要 本文設計并實現了以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.