Interop Excel in PDMS
eryar@163.com
Abstract. There are many data stored in Excel during the design procedure. Read data from Excel can do some validation in PDMS, such as check the pressure for a given pipeline. Write Excel can make the MTO export automatically. So interop Excel in PDMS have practice significant.
Key Words. PDMS, Excel, Infragistics, AVEVA .Net
1.Introduction
在工程設(shè)計(jì)過程中有很多數(shù)據(jù)都是存儲在Excel中,在PDMS中如果能讀取這些Excel數(shù)據(jù),可以對模型做一些校驗(yàn)工作,如檢查管道的設(shè)計(jì)壓力、設(shè)計(jì)溫度等屬性。而寫Excel則可用于全自動(dòng)生成公司材料報(bào)表的實(shí)現(xiàn),即生成可直接打印的材料表,不需要人為再去統(tǒng)計(jì)、分類,提高效率。由此可見,在PDMS中讀寫Excel具有重要意義。
因?yàn)锳VEVA .Net支持C#的程序開發(fā),目前在C#中讀寫Excel的常見方式有:
v OleDb:用這種方法讀取Excel速度還是非常快的,但這種方法讀取數(shù)據(jù)的時(shí)候不太靈活。這種方法是將Excel作為一個(gè)數(shù)據(jù)源,直接使用SQL語句獲取數(shù)據(jù)。優(yōu)點(diǎn):讀取方式簡單,速度快;缺點(diǎn):除了讀取過程不太靈活之外,當(dāng)Excel數(shù)據(jù)量很大時(shí),會很占用內(nèi)存,不過一般情況下還是非常不錯(cuò)的。
v COM組件:這種方式需要先引用Microsoft.Office.Interop.Excel。優(yōu)點(diǎn):可以非常靈活地讀寫Excel中的數(shù)據(jù);缺點(diǎn):讀取速度較慢,當(dāng)Excel中數(shù)據(jù)量稍大時(shí),會非常耗時(shí)。
v NPOI方式:NPOI是一組開源的組件,優(yōu)點(diǎn)是讀取Excel非常快,操作方式靈活。缺點(diǎn):只支持03版的xls,xlsx無法讀取,最新版本的已經(jīng)可以支持xlsx文件的讀取了。
v Infragistics Excel:Infragistics Excel是Infragistics品牌.Net應(yīng)用程序下操作Excel表格的組件,同樣也是托管代碼。Infragistics系列控件是一套很好很強(qiáng)大的控件,PDMS程序的界面應(yīng)該就是這套控件開發(fā)的。Infragistics Excel讀寫Excel速度快,性能較好。
本文主要介紹如何使用Infragistics Excel組件對Excel進(jìn)行讀寫操作。掌握基本方法之后,可以結(jié)合實(shí)際開發(fā)出更完善的程序,提高工作效率。
2.Reading/Writing Excel
Infragistics Excel的組件在PDMS的安裝目錄中可以找到,如下圖所示:
Figure 2.1 Infragistics Excel
根據(jù)PDMS版本的不同,使用的Infragistics版本也稍有不同。只要找到Infragistics中帶有Excel應(yīng)該就是了。C#的庫一般命名規(guī)范,容易根據(jù)類名找到相關(guān)的用法。下面給出使用Infragistics讀寫Excel中的示例程序。
using System;
using System.Text;
using System.Collections.Generic;
using Infragistics.Excel;
namespace ExcelTest
{
class Program
{
static void Main(string[] args)
{
readTest();
writeTest();
}
static void readTest()
{
Workbook aWorkbook = Workbook.Load("TestData.xls");
Worksheet aWorksheet = aWorkbook.WindowOptions.SelectedWorksheet;
Console.WriteLine("Reading Excel Test
");
for (int i = 8; i < 60; i++)
{
Console.WriteLine(aWorksheet.GetCell("A" + i.ToString()).Value);
}
}
static void writeTest()
{
Workbook aWorkbook = new Workbook();
Worksheet aWorksheet = aWorkbook.Worksheets.Add("Test");
Console.WriteLine("Writing Excel Test
");
for (int i = 1; i < 10; i++)
{
aWorksheet.GetCell("A" + i.ToString()).Value = "test value " + i.ToString();
}
aWorkbook.Save("TestBook.xls");
}
}
}
讀取Excel結(jié)果如下圖所示:
Figure 2.2 Reading Excel Result
寫Excel結(jié)果如下圖所示:
Figure 2.3 Writing Excel Result
由上述示例可知,使用Infragistics來讀寫Excel還是很簡單的。添加Infragistics Excel的引用后,可以打開其對象結(jié)構(gòu),查看下。根據(jù)這些類名及其相關(guān)函數(shù),使用簡單。
3.Conclusion
工程設(shè)計(jì)中的大部分?jǐn)?shù)據(jù)都是在Excel中,且材料表之類的出版文件都是Excel形式。所以掌握使用程序?qū)xcel進(jìn)行讀寫,對提高辦公自動(dòng)化有重要意義。本文結(jié)合PDMS中的Infragistics控件來對PDMS中Excel的讀寫進(jìn)行詳細(xì)介紹。掌握方法后,也可以將這個(gè)控件應(yīng)用到其他程序,前提是必須有Infragistics這套控件。
掌握Excel的讀寫方法,可以結(jié)合實(shí)際進(jìn)行擴(kuò)展,開發(fā)出功能更強(qiáng)大的程序。
4.References
1. Tsong Chen. C#讀取Excel幾種方法體會.
http://www.cnblogs.com/Tsong/archive/2013/02/21/2920941.html
2. http://www.infragistics.com/samples/silverlight/infragistics-excel/overview