Есть xls файл с большим количеством строк. Использую C#, библиотеку interop. Чтение происходит в виде создания списка объектов (один объект представляет одну строку) со свойствами a1, a2...a8, которые содержат значения столбцов данной строки. Затем следующая строка и т.д. циклом for, пока не встречу пустую строку. Затем с помощью этих объектов провожу анализ. Проблема в очень маленькой скорости считывания. В интернете советуют использовать EPPlus. Но, он работает с xlsx, у меня же xls. Руками, через ctrl+a, ctrl+v копирование большого количества ячеек на другой лист занимает всего пару сек. По аналогии, можно ли как-то выделить, скопировать весь диапазон заполненных ячеек в, допустим, двумерный массив и далее с ним уже работать? По идее, скорость на порядок увеличиться? Если да, как это сделать? Количество строк в разных файлах различно. Спасибо.
Мой фрагмент кода
//считываем ячейки, пока не встретим пустаю
while (true)
{
excelcells = excelworksheet.get_Range("A" + row.ToString(), Type.Missing);
if (excelcells.Value2 == null)
{
break;
}
excelcells = excelworksheet.get_Range("C" + row.ToString(), Type.Missing);
int AA = Int32.Parse(excelcells.Value2.ToString());
excelcells = excelworksheet.get_Range("H" + row.ToString(), Type.Missing);
double BB = (double)excelcells.Value2;
excelcells = excelworksheet.get_Range("I" + row.ToString(), Type.Missing);
double CC = (double)excelcells.Value2;
new ClassRs(AA, BB, CC);
row++;
}
Открываете Excel через Interop, далее пересохраняете(конвертируете)
в *.xlsx в какую-нибудь временную директорию. Пересохранение происходит почти моментально.
Далее открываете новый файл черезEpPlus и со скоростью света читаете ячейки.
Проблема решена.
Единственный минус в том, что для первого шага понадобится interop.
Еще есть вариант с выделением Range на странице и вызовом метода Copy у Application. Тогда все это будет скопировано в буфер-обмена. Я посмотрел буфер через Free Clipboard Viewer и там есть html-представление=> парсить его можете, но лучше все таки первый мой вариант.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости