2009-05-26 91 views
12

我如何从Excel工作表读取数据并将标记的选择(区域)加载到多维数组中? Excel中的列本身可以是多维数组,因为它包含的不仅仅是一个值。从Excel中读取(范围到多维数组)C#

想法(不知道这有多好或不好)现在是通过所有的Excel.Area(选定的字段)执行for循环,并将该字段的内容添加到多维数组中。由于多维数组的类型为object [,],因此非泛型,因此没有方便的add()方法。所有这些都需要手动完成。

任何想法,如果这种方法是好的,或者如果它可以更有效地完成?

回答

18

您可以阅读范围的值作为数组:

using (MSExcel.Application app = MSExcel.Application.CreateApplication()) 
{ 
    MSExcel.Workbook book1 = app.Workbooks.Open(this.txtOpen_FilePath.Text); 
    MSExcel.Worksheet sheet = (MSExcel.Worksheet)book1.Worksheets[1]; 
    MSExcel.Range range = sheet.GetRange("A1", "F13"); 

    object value = range.Value; //the value is boxed two-dimensional array 
} 

此代码段是从.NET wrapper for MS Office。但是同样的原则是在MS Excel中的VSTO或VBA中。

2

下面是C#代码来做到这一点与SpreadsheetGear

// Load the workbook. 
    SpreadsheetGear.IWorkbook workbook = SpreadsheetGear.Factory.GetWorkbook(@"MyWorkbook.xlsx"); 
    // Get a range of cells as an array of object[,]. 
    object[,] values = (object[,])workbook.Worksheets["MySheet"].Cells["A1:J10"].Value; 

的SpreadsheetGear还提供了快速的API来访问一个单元格在一个时间,这样就可以避开的值复制到一个数组而不牺牲性能。

声明:我自己的SpreadsheetGear LLC

+0

为什么使用SpreadsheetGear和Excel Interop更好? – gyurisc 2010-01-12 09:25:05