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
在工程設計過程中有很多數據都是存儲在Excel中,在PDMS中如果能讀取這些Excel數據,可以對模型做一些校驗工作,如檢查管道的設計壓力、設計溫度等屬性。而寫Excel則可用于全自動生成公司材料報表的實現,即生成可直接打印的材料表,不需要人為再去統計、分類,提高效率。由此可見,在PDMS中讀寫Excel具有重要意義。
因為AVEVA .Net支持C#的程序開發,目前在C#中讀寫Excel的常見方式有:
v OleDb:用這種方法讀取Excel速度還是非常快的,但這種方法讀取數據的時候不太靈活。這種方法是將Excel作為一個數據源,直接使用SQL語句獲取數據。優點:讀取方式簡單,速度快;缺點:除了讀取過程不太靈活之外,當Excel數據量很大時,會很占用內存,不過一般情況下還是非常不錯的。
v COM組件:這種方式需要先引用Microsoft.Office.Interop.Excel。優點:可以非常靈活地讀寫Excel中的數據;缺點:讀取速度較慢,當Excel中數據量稍大時,會非常耗時。
v NPOI方式:NPOI是一組開源的組件,優點是讀取Excel非常快,操作方式靈活。缺點:只支持03版的xls,xlsx無法讀取,最新版本的已經可以支持xlsx文件的讀取了。
v Infragistics Excel:Infragistics Excel是Infragistics品牌.Net應用程序下操作Excel表格的組件,同樣也是托管代碼。Infragistics系列控件是一套很好很強大的控件,PDMS程序的界面應該就是這套控件開發的。Infragistics Excel讀寫Excel速度快,性能較好。
本文主要介紹如何使用Infragistics Excel組件對Excel進行讀寫操作。掌握基本方法之后,可以結合實際開發出更完善的程序,提高工作效率。
2.Reading/Writing Excel
Infragistics Excel的組件在PDMS的安裝目錄中可以找到,如下圖所示:
Figure 2.1 Infragistics Excel
根據PDMS版本的不同,使用的Infragistics版本也稍有不同。只要找到Infragistics中帶有Excel應該就是了。C#的庫一般命名規范,容易根據類名找到相關的用法。下面給出使用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結果如下圖所示:
Figure 2.2 Reading Excel Result
寫Excel結果如下圖所示:
Figure 2.3 Writing Excel Result
由上述示例可知,使用Infragistics來讀寫Excel還是很簡單的。添加Infragistics Excel的引用后,可以打開其對象結構,查看下。根據這些類名及其相關函數,使用簡單。
3.Conclusion
工程設計中的大部分數據都是在Excel中,且材料表之類的出版文件都是Excel形式。所以掌握使用程序對Excel進行讀寫,對提高辦公自動化有重要意義。本文結合PDMS中的Infragistics控件來對PDMS中Excel的讀寫進行詳細介紹。掌握方法后,也可以將這個控件應用到其他程序,前提是必須有Infragistics這套控件。
掌握Excel的讀寫方法,可以結合實際進行擴展,開發出功能更強大的程序。
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