Необходимо скопировать все данные из книги Excel в строковую переменную - C#

Узнай цену своей работы

Формулировка задачи:

Есть одна проблема. Необходимо скопировать все данные из книги Excel в строковую переменную - в общем, так надо Для работы используется using Microsoft.Office.Interop.Excel; код, где приложение подключается и считывает данные следующий:
// создаем обьекты параметров для вызова методов библиотеки Excel
//обьект пустого значения
Object wMissing = System.Reflection.Missing.Value;
//обьекты true  и  false
Object wTrue = true;
Object wFalse = false;
Object PassWord = "12345"; //это на тот случай если есть пароль...обрабатываем если надо ошибку в исключениях
//создаем обьект приложения Excel
ExApp = new Microsoft.Office.Interop.Excel.Application();
//делаем приложение невидимым
ExApp.Visible = false;
//отключаем обновление и другие мешающие быстроте параметры
ExApp.ScreenUpdating = false;
ExApp.ErrorCheckingOptions.BackgroundChecking = false;
ExApp.ErrorCheckingOptions.NumberAsText = false;
ExApp.ErrorCheckingOptions.InconsistentFormula = false;
//открываем наше приложение Excel
ExBook = ExApp.Workbooks.Open(docPath /*путь к ексельному файлу*/,
                                             wFalse,
                                             wTrue,
                                             wMissing,
                                             PassWord,
                                             wMissing,
                                             wTrue,
                                             wMissing,
                                             wMissing,
                                             wFalse,
                                             wMissing,
                                             wMissing,
                                             wMissing,
                                             wMissing,
                                             wMissing);
 
ExApp.Calculation = XlCalculation.xlCalculationManual;//отключаем автоматическоре вычисление формул
//бежим по всем Листам
for (int sheetNum = 1; sheetNum < ExBook.Sheets.Count + 1; sheetNum++)
{
 Worksheet sheet = (Microsoft.Office.Interop.Excel.Worksheet)ExBook.Sheets[sheetNum];
 //определеяем диапазон заполненных ячеек (кто не знает, если нажимаете Ctrl+A, то выделяются все  заполненные ячейки, так вот код ниже его аналог )
 Range excelRange = sheet.UsedRange;
 if (excelRange.Columns.Count > 0)
 {
  //тут считываем данные с Листа
  object[,] valueArray = (object[,])excelRange.get_Value(XlRangeValueDataType.xlRangeValueDefault);
  if (valueArray != null)
  {
   for (int R = valueArray.GetLowerBound(0); R <= valueArray.GetUpperBound(0); R++)
     for (int C = valueArray.GetLowerBound(1); C <= valueArray.GetUpperBound(1); C++)
         if (valueArray[R, C] != null)
          ExcelText += valueArray[R, C].ToString() + " ";
  }
 }
}
//чистим
ExBook.Close(wFalse, docPath, null);
Marshal.ReleaseComObject(ExBook);
ExApp.DisplayAlerts = false;
ExApp.Workbooks.Close();
ExApp.Quit();
ExApp = null;
GC.GetTotalMemory(true);
Проблема, собственно, вот в чем: этот код отлично работает, но... когда в книге 20 Листов и в каждом 65 тыс заполненных строк, то копирование данных может занять часы. Может, кто-нибудь подскажет более быстрый способ извлечения данных из Excel!

Решение задачи: «Необходимо скопировать все данные из книги Excel в строковую переменную»

textual
Листинг программы
switch (value.GetType())
 {
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5
Похожие ответы