public Resultado ImportarPresupuesto(int presupuestoId, string rutaArchivoImportado, string nombreArchivo, int tamanioArchivo, string usuarioActual) { try { // Se guardan datos de Cabecera del Lote var lote = new RecursosExcelLote { NombreArchivo = nombreArchivo, TamanioArchivo = tamanioArchivo, Activo = true, UsuarioCreacion = usuarioActual, FechaCreacion = DateTime.Now, UsuarioModificacion = usuarioActual, FechaModificacion = DateTime.Now }; dbContext.RecursosExcelLotes.Add(lote); dbContext.SaveChanges(); // Se guarda el detalle var startColumn = 1; var startRow = 2; using (ExcelPackage package = new ExcelPackage(new FileInfo(rutaArchivoImportado))) { ExcelWorksheet worksheet = package.Workbook.Worksheets[1]; var cell = worksheet.Cells[startRow, startColumn] != null && worksheet.Cells[startRow, startColumn].Value != null ? worksheet.Cells[startRow, startColumn].Value.ToString() : string.Empty; var item = new RecursosExcel(); var recurso = new DataAccess.Models.Recurso(); while (!string.IsNullOrEmpty(cell)) { item = new RecursosExcel { RecursoExcelLoteId = lote.Id, PresupuestoId = presupuestoId, Ciudad = worksheet.Cells[startRow, startColumn].Value.ToString(), Facility = worksheet.Cells[startRow, startColumn + 1].Value.ToString(), CuentaContable = worksheet.Cells[startRow, startColumn + 2].Value.ToString(), PlanProgramatico = worksheet.Cells[startRow, startColumn + 3].Value.ToString(), Descripcion = worksheet.Cells[startRow, startColumn + 4].Value.ToString(), NotasAdicionales = worksheet.Cells[startRow, startColumn + 5].Value != null ? worksheet.Cells[startRow, startColumn + 5].Value.ToString() : string.Empty, Cobertura = worksheet.Cells[startRow, startColumn + 6].Value != null?Convert.ToInt32(worksheet.Cells[startRow, startColumn + 6].Value.ToString()) : 0, IndiceTransferencia = worksheet.Cells[startRow, startColumn + 7].Value != null?Convert.ToDecimal(worksheet.Cells[startRow, startColumn + 7].Value.ToString()) : 0, MontoAnual = worksheet.Cells[startRow, startColumn + 8].Value != null?Convert.ToDecimal(worksheet.Cells[startRow, startColumn + 8].Value.ToString()) : 0, Territorio = worksheet.Cells[startRow, startColumn + 9].Value.ToString(), Contraparte = worksheet.Cells[startRow, startColumn + 10].Value.ToString(), CodigoAuditoria = worksheet.Cells[startRow, startColumn + 11] != null && worksheet.Cells[startRow, startColumn + 11].Value != null ? worksheet.Cells[startRow, startColumn + 11].Value.ToString() : "0", AccionNacional = worksheet.Cells[startRow, startColumn + 12] != null && worksheet.Cells[startRow, startColumn + 12].Value != null ? worksheet.Cells[startRow, startColumn + 12].Value.ToString() : "0", MarcoLogico = worksheet.Cells[startRow, startColumn + 13] != null && worksheet.Cells[startRow, startColumn + 13].Value != null ? worksheet.Cells[startRow, startColumn + 13].Value.ToString() : "0", Activo = true, UsuarioCreacion = usuarioActual, FechaCreacion = DateTime.Now, UsuarioModificacion = usuarioActual, FechaModificacion = DateTime.Now }; dbContext.RecursosExcels.Add(item); startRow++; cell = worksheet.Cells[startRow, startColumn] != null && worksheet.Cells[startRow, startColumn].Value != null ? worksheet.Cells[startRow, startColumn].Value.ToString() : string.Empty; } dbContext.SaveChanges(); } return(new Resultado("El Recurso se guardó correctamente.")); } catch (Exception excepcion) { LogHelper.RegisterError(excepcion.Message); return(new Resultado("Ocurrio un error. Favor contactarse con el administrador.")); } }
public MemoryStream GetReporteBet(string templateDocument, int facilityId, int ciudadId) { try { // Results Output MemoryStream output = new MemoryStream(); // Read Template using (FileStream templateDocumentStream = File.OpenRead(templateDocument)) { // Create Excel EPPlus Package based on template stream using (ExcelPackage package = new ExcelPackage(templateDocumentStream)) { // Grab the sheet with the template, sheet name is "BOL". ExcelWorksheet sheet = package.Workbook.Worksheets["ReporteBET"]; var facility = dbContext.Facilities.Find(facilityId); var ciudad = dbContext.Ciudades.Find(ciudadId); sheet.Cells[1, 1].Value = $"Ciudad: {ciudad.Codigo} - {ciudad.Nombre}"; sheet.Cells[2, 1].Value = $"Unidad de Programa: {facility.Codigo} - {facility.Nombre}"; //sheet.Cells[6, 2].Formula = "SUMA(B7:B11)"; var recursosMeses = dbContext.RecursosMeses.Where(r => r.Activo && r.Recurso.Activo && r.Recurso.FacilityId == facilityId && r.Recurso.CiudadId == ciudadId).ToList(); var recurso = new DataAccess.Models.Recurso(); if (recursosMeses.Count > 0) { foreach (var recursoMes in recursosMeses) { recurso = recursoMes.Recurso; sheet.InsertRow(5, 1, 4); sheet.Cells[5, 1].Value = recursoMes.Recurso.CuentaContable.Numero; var descripcionFiltrada = recurso.Descripcion.Normalize(NormalizationForm.FormD).Where(c => char.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark).ToArray(); sheet.Cells[5, 2].Value = new String(descripcionFiltrada); sheet.Cells[5, 3].Value = recurso.CodigosAuditoria != null ? recurso.CodigosAuditoria.Codigo : string.Empty; var codigoProgramatico = $"{recurso.Ciudad.Codigo}{recurso.PlanProgramatico.Codigo}{recurso.Territorio.Codigo}{recurso.Contraparte.Codigo}-/{(recurso.AccionesNacionale != null ? recurso.AccionesNacionale.Codigo : "")}*{(recurso.CodigoMarcoLogico != null ? recurso.CodigoMarcoLogico.Codigo : "")}:{recurso.NotasAdicionales}"; var codigoProgramaticoFiltrado = codigoProgramatico.Normalize(NormalizationForm.FormD).Where(c => char.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark).ToArray(); sheet.Cells[5, 4].Value = new String(codigoProgramaticoFiltrado); sheet.Cells[5, 5].Value = recursoMes.Recurso.Monto; sheet.Cells[5, 6].Value = recursoMes.Enero; sheet.Cells[5, 7].Value = recursoMes.Febrero; sheet.Cells[5, 8].Value = recursoMes.Marzo; sheet.Cells[5, 9].Value = recursoMes.Abril; sheet.Cells[5, 10].Value = recursoMes.Mayo; sheet.Cells[5, 11].Value = recursoMes.Junio; sheet.Cells[5, 12].Value = recursoMes.Julio; sheet.Cells[5, 13].Value = recursoMes.Agosto; sheet.Cells[5, 14].Value = recursoMes.Septiembre; sheet.Cells[5, 15].Value = recursoMes.Octubre; sheet.Cells[5, 16].Value = recursoMes.Noviembre; sheet.Cells[5, 17].Value = recursoMes.Diciembre; } sheet.DeleteRow(4); } package.SaveAs(output); } return(output); } } catch (Exception exception) { // Log Exception return(null); } }