#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. Спасибо за информацию. Отступы более или менее случайны.