13

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

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

知道这种方法是否可行或者是否可以更有效地完成?

4

2 回答 2

19

您可以将 Range 的值读取为数组:

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
}

此代码片段来自MS Office 的 .NET 包装器。但同样的原则在 MS Excel 中的 VSTO 或 VBA 中。

于 2009-05-26T12:31:32.483 回答
2

这是使用SpreadsheetGear执行此操作的 C# 代码:

    // 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

于 2009-05-26T14:18:49.147 回答