Подтвердить что ты не робот

Чтение из Excel (диапазон в многомерный массив) С#

Как я прочитал бы с листа Excel и загрузил отмеченный отбор (Area) в многомерный массив? Столбец в Excel сам может быть многомерным массивом, поскольку он содержит не более одного значения.

Идея (не уверен, насколько это хорошо или плохо) заключается в том, чтобы сделать цикл for через весь Excel.Area(выбранные поля) и добавить содержимое этого поля в многомерный массив. Поскольку многомерный массив имеет тип object [,] и поэтому не является общим, для него нет удобного метода add(). Все это нужно сделать вручную.

Любая идея, если этот подход в порядке или если это можно сделать более эффективно?

4b9b3361

Ответ 1

Вы можете прочитать значение Range как array:

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-оболочке для MS Office. Но тот же принцип в VSTO или VBA в MS Excel.

Ответ 2

Вот код С#, чтобы сделать это с помощью 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