Exemple #1
0
        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);
        }