чтение огромных данных из Excel с использованием Microsoft.Office.Interop.Excel в C # - PullRequest
1 голос
/ 19 июля 2011

Я читаю из файла .xlsx (в C #) с огромными данными (максимальная длина нескольких столбцов составляет 415000 с использованием Microsoft.Office.Interop.Excel, файл имеет 12 столбцов с различной длиной. Я хочу найти длинуиз конкретных столбцов, например, 3,4,5

Я пытался сделать что-то вроде ниже (поскольку я не вижу прямой функции для вычисления фактической длины столбца), но дает недостаточно памяти для завершения этогооперация. (Исключение из HRESULT: 0x8007000E (E_OUTOFMEMORY)) в строке 1

int rows = excelWorksheet.UsedRange.Rows.Count;
Excel.Range excelRange = excelWorksheet.UsedRange;
object[,] valueArr = (object[,])excelRange.get_Value(Excel.XlRangeValueDataType.xlRangeValueDefault);.......1

int[] columnSize = new int[valueArr.Length / rows+1];

Затем цикл по столбцам, чтобы найти длину каждого столбца, цикл до тех пор, пока в его строке не будут данные

Может ли кто-нибудь помочь в этом? Есть ли прямой способ узнать длину столбца ...

1 Ответ

0 голосов
/ 19 июля 2011

Рассмотрите возможность использования Open XML SDK от Microsoft, который позволяет загружать файл XLSX в качестве документа XML. Использование Linq-to-XML может быть более эффективным способом манипулирования большими файлами Excel, чем использование Excel и выполнение взаимодействия.

Вы можете найти больше информации об Open XML на MSDN .

...