usebeq.wrappers.epplus 1.0.3

There is a newer version of this package available.
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                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="usebeq.wrappers.epplus" Version="1.0.3" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add usebeq.wrappers.epplus --version 1.0.3                
#r "nuget: usebeq.wrappers.epplus, 1.0.3"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// 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;
  1. 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:

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.10 213 11/15/2023
1.0.7 74 11/14/2023
1.0.6 74 11/14/2023
1.0.5 79 11/14/2023
1.0.3 145 4/21/2023