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