officeopenxml net mvc exportar create asp and c# asp.net-mvc-5 epplus

c# - net - EPPlus: ¿cómo puedo asignar un borde alrededor de cada celda después de aplicar LoadFromCollection?



mvc create excel file and download (1)

En mi ActionResult de exportación pude cargar el modelo en mi ExcelPackage.

Donde estoy teniendo problemas es asignar un borde alrededor de cada celda una vez que se aplica LoadFromCollection . Mientras que AutoFitColumns se aplica correctamente, el estilo de borde que apliqué solo funciona en Cells["D1"] , pero no en la tabla.

BorderAround coloca con éxito un borde alrededor de toda la tabla, pero prefiero aplicar al borde a las celdas dentro de la tabla. ¿Hay alguna manera de que pueda hacer eso?

// Fill worksheet with data to export var modelCells = worksheet.Cells["D1"]; var border = modelCells.Style.Border.Top.Style = modelCells.Style.Border.Left.Style = modelCells.Style.Border.Right.Style = modelCells.Style.Border.Bottom.Style = ExcelBorderStyle.Medium; modelCells .LoadFromCollection(Collection: exportQuery, PrintHeaders: true) .AutoFitColumns();


Si sé la cantidad de columnas que tiene el modelo, puedo contar el número de filas con una función y hacer esto:

var modelRows = exportQuery.Count()+1; string modelRange = "D1:F" + modelRows.ToString(); var modelTable = worksheet.Cells[modelRange];

O, con más contexto. Verifiqué que EPPlus aceptará una variable de cadena en Celdas [], lo que me permite seleccionar toda la tabla y aplicar mi estilo de borde y AutoFitColumns{} correctamente. Todo lo que tengo que hacer manualmente es ingresar la columna inicial y la columna final en la variable modelRange .

var modelCells = worksheet.Cells["D1"]; var modelRows = exportQuery.Count()+1; string modelRange = "D1:F" + modelRows.ToString(); var modelTable = worksheet.Cells[modelRange]; // Assign borders modelTable.Style.Border.Top.Style = ExcelBorderStyle.Thin; modelTable.Style.Border.Left.Style = ExcelBorderStyle.Thin; modelTable.Style.Border.Right.Style = ExcelBorderStyle.Thin; modelTable.Style.Border.Bottom.Style = ExcelBorderStyle.Thin; // Fill worksheet with data to export modelCells.LoadFromCollection(Collection: exportQuery, PrintHeaders: true); modelTable.AutoFitColumns();