usebeq.wrappers.epplus
1.0.3
See the version list below for details.
dotnet add package usebeq.wrappers.epplus --version 1.0.3
NuGet\Install-Package usebeq.wrappers.epplus -Version 1.0.3
<PackageReference Include="usebeq.wrappers.epplus" Version="1.0.3" />
paket add usebeq.wrappers.epplus --version 1.0.3
#r "nuget: usebeq.wrappers.epplus, 1.0.3"
// Install usebeq.wrappers.epplus as a Cake Addin #addin nuget:?package=usebeq.wrappers.epplus&version=1.0.3 // Install usebeq.wrappers.epplus as a Cake Tool #tool nuget:?package=usebeq.wrappers.epplus&version=1.0.3
EPPlusWrapper
El paquete EPPlusWrapper
es una interfaz de C# que te permite crear, modificar y descargar archivos de Excel haciendo uso de la biblioteca EPPlus.
Este paquete te permite insertar textos y tablas en un archivo de Excel, el cual puede ser un nuevo documento o puedes editar uno existente.
Instalación
Asegúrate de tener instalado EPPlus y CommunityToolkit.Diagnostics en tu proyecto. Estas bibliotecas se descargan automaticamente como dependencia en caso de que no las tengas instaladas.
Uso
1. Crear una instancia de la clase Book
Book book = new Book();
2. Establecer datos para el libro
Usa el método ToMemoryStream
de la clase BookUtilities
para convertir un documento alojado en tu servidor en un MemoryStream
.
string webRootPath = _hostingEnvironment.WebRootPath;
string filePath = Path.Combine(webRootPath, "demo.xlsx");
var layout = BookUtilities.ToMemoryStream(filePath);
BookData bookData = new BookData {
Layout = layout
};
book.SetBookData(bookData);
3. Poblar las hojas con datos
La hoja puede o no existir en el layout proporcionado, en caso de que no exista, se creará una nueva con el nombre proporcionado.
Hay dos formas en las que se puede proporcionar información para llenar una hoja de Excel
- Se puede llenar una hoja de Excel, celda por celda, para esto, se tiene que proporcionar un objeto donde el nombre de la propiedad debe ser el nombre de la celda donde queremos que el texto se muestre. Ejemplo:
// Se puede proporcionar un objeto de tipo declarado o dinámico
var simpleData = new {
A1 = "Demo Test Text",
B5 = 1,
C3 = 3.5,
D1 = DateTime.Now,
E2 = false
}
o
// Se puede proporcionar un ExpandoObject
dynamic simpleData = new ExpandoObject();
simpleData.A1 = 1;
simpleData.A2 = "TestName 1";
simpleData.A3 = 10.5;
simpleData.A4 = DateTime.Now;
- Se puede llenar una hoja de Excel proporcionando una colección de objetos, por ejemplo, el resultado de una consulta a un sistema de persistencia. Ejemplo:
// Colección de objetos de tipo declarado
var tableData = new List<Alumno> {
new Alumno { Id = 1, Nombre = "Brandon Camacho", Edad = 9, Promedio = 8.9 },
new Alumno { Id = 2, Nombre = "Lucia Ruiz", Edad = 10, Promedio = 7.9 },
new Alumno { Id = 3, Nombre = "Raúl Bueno", Edad = 9, Promedio = 9.5 },
new Alumno { Id = 4, Nombre = "Manuel Gomez", Edad = 9, Promedio = 8.9 }
}
o
// Colección de objetos de tipo dinámico
var tableData = new List<dynamic> {
new { Id = 1, Nombre = "Brandon Camacho", Edad = 9, Promedio = 8.9 },
new { Id = 2, Nombre = "Lucia Ruiz", Edad = 10, Promedio = 7.9 },
new { Id = 3, Nombre = "Raúl Bueno", Edad = 9, Promedio = 9.5 },
new { Id = 4, Nombre = "Manuel Gomez", Edad = 9, Promedio = 8.9 }
}
o
// Resultado de una consulta
var tableData = appContext.Alumnos
.Where(x => x.Promedio > 7.5)
.ToList();
o
//Diccionario de objetos ExpandoObject
dynamic brandon = new ExpandoObject();
brandon.Id = 1;
brandon.Nombre = "Brandon Camacho";
brandon.Edad = 9;
brandon.Promedio = 8.9;
dynamic lucia = new ExpandoObject();
lucia.Id = 2;
lucia.Nombre = "Lucia Ruiz";
lucia.Edad = 10;
// lucia.Promedio = 7.9; El uso de Diccionarios permite que elementos de nuestra colección puedan prescindir de propiedades
...
var tableData = new List<ExpandoObject>() { brandon, lucia, ... };
Se debe proporcionar como argumento una lista de objetos dinámicos al método Populate
.
List<dynamic> sheets = new List<dynamic> {
new SimpleDataSheet {
Name = "Hoja2",
Data = simpleData
},
new TableDataSheet {
Name = "Hoja1",
Data = tableData
TargetCell = "A1",
IncludeHeaders = true, // Se puede o no incluir el encabezado de la tabla
Style = TableStyles.Dark8 // Se puede o no setear un estilo a la tabla
}
};
book.Populate(sheets);
4. Establecer estilos para rangos de celdas (Opcional)
List<CellStyle> styles = new List<CellStyle> {
new CellStyle {
Sheet = "Hoja1",
Range = "A1:A5",
Bold = true,
FillStyle = ExcelFillStyle.Solid,
BackgroungColor = Color.LightGray
}
};
book.SetStyle(styles);
5. Descargar el archivo de Excel
MemoryStream outputStream = book.Download();
6. Uso del MemoryStream en el controlador de la aplicación
public FileStreamResult DescargarReporte() {
IBook book = new Book();
...
var stream = book.Download();
var fileStreamResult = new FileStreamResult(
stream,
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
);
fileStreamResult.FileDownloadName = "document.xlsx";
return fileStreamResult;
}
Estructura de clases
Book
- La clase principal que contiene los métodos principales.
BookData
- Contiene información sobre el libro, como la plantilla de diseño.
CellStyle
- Clase para definir estilos de celdas.
TableDataSheet
- Clase para poblar una hoja con datos tabulares.
SimpleDataSheet
- Clase para poblar una hoja celda por celda.
BookUtilities
- Clase estática con el método estático ToMemoryStream
para convertir un archivo físico del servidor en un MemoryStream.
Contribuciones
Las contribuciones son bienvenidas. Por favor, envía una solicitud de extracción con tus cambios.
Licencia
Este proyecto está licenciado bajo la licencia MIT.
EL SOFTWARE SE PROPORCIONA TAL CUAL, SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUIDAS, ENTRE OTRAS, LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DE LOS DERECHOS DE AUTOR SERÁN RESPONSABLES DE NINGUNA RECLAMACIÓN, DAÑOS U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN DE CONTRATO, AGRAVIO O DE OTRO TIPO, QUE SURJA DE, FUERA DE O EN CONEXIÓN CON EL SOFTWARE O EL USO U OTROS TRATOS EN EL SOFTWARE.
Licencias de terceros
Este proyecto utiliza los siguientes paquetes de terceros:
- EPPlus: Licencia Polyform Noncommercial 1.0.0
- CommunityToolkit.Diagnostics: Licencia MIT
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- EPPlus (>= 6.2.1)
- Microsoft.CSharp (>= 4.7.0)
- usebeq.CommunityToolkit.Diagnostics (>= 8.2.0-build.15)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.