C # Interop Excel быстро получает уровни отступов в ячейках

#c# #visual-studio #excel-interop

#c# #visual-studio #excel-взаимодействие

Вопрос:

Я пытаюсь быстро загрузить текстовые значения из электронной таблицы Excel в массив 2d-строк (Visual Studio, C #), и важно сохранить информацию об отступах. Мне удалось сделать это (хотя и медленно) с помощью следующего кода:

     int indentLevel = msExcelRange.Cells[row, col]).IndentLevel;
    string rawText = msExcelRange.Cells[row, col]).Text;

    string spacesString = "";

    //Generate spaces-string proportional to indent level
    for(int i = 0; i < indentLevel; i  )
    {
        spacesString  = spacesString   " ";
    }

    //Append spaces to emulate indentation level
    return spacesString   rawText;
  

С помощью этой функции я просто перебираю каждую отдельную строку и столбец. Загрузка всей электронной таблицы Excel заняла 15 минут, поэтому я ищу более быстрый способ.

Я наткнулся на эту функцию, которая извлекает текст быстрее (всего за несколько секунд) :

 object[,] rawText = msExcelRange.get_Value(Microsoft.Office.Interop.Excel.XlRangeValueDataType.xlRangeValueDefault);
  

Но уровень отступов теряется. Существует ли аналогичная функция для быстрого извлечения отступов?

Комментарии:

1. Понижающий голос? Конструктивная критика приветствуется.

2. Спасибо за то, что нашли лучший способ получить _values, но, к сожалению, я не думаю, что есть что-то подобное для уровня отступа.

3. Кроме того, я сомневаюсь, что это будет иметь существенное значение, но вы также могли бы просто сделать return new string(' ', indentLevel) rawText; вместо цикла и сохранить несколько конкатенаций строк.

4. Существует ли какой-либо шаблон для уровня отступа (например, все ячейки в строке или столбце имеют одинаковый уровень) или он более или менее случайный?

5. Спасибо за информацию. Отступы более или менее случайны.