如何从Excel工作表中读取并将标记的选择(区域)加载到多维数组中? Excel中的列本身可以是多维数组,因为它不仅包含一个值。
现在的想法(不确定这是好还是坏)是在所有Excel.Area(选定字段)中进行for循环,并将该字段的内容添加到多维数组中。由于多维数组的类型为object [,],因此非泛型,因此没有方便的add()方法。所有这些都需要手动完成。
不知道这种方法是否合适,或者是否可以更有效地完成?
答案 0 :(得分:18)
您可以将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
}
此代码段来自.NET wrapper for MS Office。但同样的原则是在MS Excel中的VSTO或VBA中。
答案 1 :(得分: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