private string GetBlockOfExcelData(string fileName, string sheetName, int rowStart, int rowEnd) { const int MAX_COLUMN_NUMBER = 256; ExcelFactory factory = ExcelFactory.CreateInstance(ExcelApplicationType.TMS, ExcelGarbageCollectionStyle.DesktopApplication); ExcelApplication app = factory.AddApplication(); ExcelWorkbook bookInitial = app.AddWorkbook("initial", fileName); ExcelWorksheet sheetInitial = bookInitial[sheetName]; ExcelWorkbook bookResult = app.AddWorkbook("final"); _context.Log.AddLogInformation("XLS-файл успешно загружен в память. Создан пустая результирующая книга."); bookResult.CopyRange(bookInitial, sheetInitial.Number, rowStart, 1, rowEnd, MAX_COLUMN_NUMBER, 2, 1, 1); _context.Log.AddLogInformation("Диапазон скопирован в новую книгу"); ExcelWorksheet sheetResult = bookResult[1]; for (int i = 0; i < MAX_COLUMN_NUMBER; i++) { sheetResult.WriteValue(1, i + 1, 1); } _context.Log.AddLogInformation("Заполнили единицами первую строку результирующего листа"); string fileNameResult = Path.Combine(_context.ExecutedPackage.PackagePath, Guid.NewGuid().ToString("N") + ".xls"); _context.Log.AddLogInformation("Готовы сохранить результирующий файл в '" + fileNameResult + "'"); bookResult.Save(fileNameResult); _context.Log.AddLogInformation("Результирующий файл сохранен."); return(fileNameResult); }