Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

578
Vistas
¿Cómo leer un archivo de Excel importado con EPPLUS?
 private readonly ILogger<HomeController> _logger; public HomeController(ILogger<HomeController> logger, ApplicationDbContext context) { _logger = logger; _context = context; } public IActionResult Index() { return View(); } ApplicationDbContext _context; public List<Contact>Import (string fileName) { var FilePath = $"{Directory.GetCurrentDirectory()}{@""}" + "\\" + fileName; FileInfo fileInfo = new FileInfo(FilePath); ExcelPackage.LicenseContext = LicenseContext.NonCommercial; using (ExcelPackage package = new ExcelPackage(fileInfo)) { ExcelWorksheet worksheet = package.Workbook.Worksheets.FirstOrDefault(); int rowCount = worksheet.Dimension.End.Row; for (int row = 2; row <= rowCount; row++) { Contact con = new Contact(); if (row == 1) con.Libelle = worksheet.Cells[row, row].Value.ToString(); else if (row == 2) con.Id = (int)worksheet.Cells[row, row].Value; _context.Add(con); _context.SaveChanges(); } } return _context.Contacts.ToList(); }

Estoy tratando de leer el archivo de Excel con EPPLUS, pero tengo una excepción, dice System.NullReferenceException: 'Referencia de objeto no configurada como una instancia de un objeto'. hoja de trabajo a été null.

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Sugeriré que adapte el paradigma de 'programación defensiva' a su enfoque en estos casos. Específicamente, lo que significa no escribir código que actúe asumiendo que algo más va bien sin verificar. Cuando lo haga, creo que el problema se mostrará.

Por supuesto, la comunidad no puede ayudarlo si el problema es con la hoja de Excel, a menos que pueda proporcionarla, pero veo algunas sugerencias útiles sobre el estilo de codificación que creo que pueden ayudarlo a resolverlo usted mismo.

Curioso por saber lo que encontraste si lo intentas :)

De:

 public List<Contact>Import (string fileName) { var FilePath = $"{Directory.GetCurrentDirectory()}{@""}" + "\\" + fileName; FileInfo fileInfo = new FileInfo(FilePath); ExcelPackage.LicenseContext = LicenseContext.NonCommercial; using (ExcelPackage package = new ExcelPackage(fileInfo)) { ExcelWorksheet worksheet = package.Workbook.Worksheets.FirstOrDefault(); int rowCount = worksheet.Dimension.End.Row; for (int row = 2; row <= rowCount; row++) { Contact con = new Contact(); if (row == 1) con.Libelle = worksheet.Cells[row, row].Value.ToString(); else if (row == 2) con.Id = (int)worksheet.Cells[row, row].Value; _context.Add(con); _context.SaveChanges(); } } return _context.Contacts.ToList(); }

A:

 public List<Contact> Import(string fileName) { //Try not to use uppercase for local variables, to be able to tell them from member properties var FilePath = $"{Directory.GetCurrentDirectory()}{@""}" + "\\" + fileName; FileInfo fileInfo = new FileInfo(FilePath); ExcelPackage.LicenseContext = LicenseContext.NonCommercial; using (ExcelPackage package = new ExcelPackage(fileInfo)) { ExcelWorksheet worksheet = package.Workbook.Worksheets.FirstOrDefault(); //Here ok, because a workbook has at least one sheet int rowCount = worksheet.Dimension.End.Row; for (int row = 2; row <= rowCount; row++) { try { Contact con = new Contact(); var cell = worksheet.Cells[row, row]; if (row == 1) { //Do You know how your package handles in case there is nothing in the cell? con.Libelle = cell.Value?.ToString(); } else if (row == 2) { if (int.TryParse(cell.Value, out int parsedResult)) { con.Id = parsedResult; } else throw new Exception("Invalid data"); //Your direct cast in source code justifies it not being possible to be an exceptional case 'impossible' or you wouldn't write code presuming it ;) } _context.Add(con); _context.SaveChanges(); } catch (Exception ex) { //Let Your debugger help you pinpoint the problem System.Diagnostics.Debug.Write($"problem with row {row} :{ex.ToString()}"); } } } //Are You sure Contacts are initialized, know the implementation of the _context return _context.Contacts?.ToList() ?? null; }
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda