Tengo que crear una API en dot net core que devolverá el Excel como PDF. Excel funciona bien, pero cuando intento enviarlo en formato PDF, como puede ver en el siguiente código:
[HttpPost] [Route("ExportToPdf")] public IActionResult ExportToPdf() { MemoryStream stream = MyClassExcelWorkBook.GetExcel(); return File(stream, "application/pdf", "excel-Demo.pdf"); } MyClassExcelWorkBook es una clase en la que GetExcel() devolverá MemoryStream de Excel que se ha creado. Creé el flujo de memoria de Excel desde la biblioteca epplus.core que instalé desde NuGet. ¿Alguien puede ayudar a crear el flujo de memoria de Excel a pdf como respuesta?
Una secuencia xlsx es un archivo zip de Microsoft, pero un PDF es una salida de impresora, por lo que una aplicación básica no puede convertir un archivo zip en un archivo de impresora, a menos que, por ejemplo, utilice el renderizado XLS de exportación de interoperabilidad de MS a la impresora MS PDF. Y ese sería el mejor método en una PC con Office.net.
Presumiblemente, está permitiendo a los usuarios de MS.net sin ninguna versión de MS Office instalada.
Hay muchas variaciones o complementos de EPPlus que pueden hacer la conversión necesaria a PDF y https://www.nuget.org/packages/EpplusExcel/ está diseñado específicamente como uno de ellos, pero como su V1 y no actualizado en los últimos 7 años puede no es la mejor solución final admitida, pero vale la pena intentarlo solo para ver cómo funcionan sus metodologías para usted.
El convertidor más común que evita la interoperabilidad es usar Libre/Open Office con su lenguaje básico alternativo a VBA para imprimir áreas de hojas de cálculo en impresiones de PDF.
Evitaría cualquier método X/HTML como cambiar de estructura de área de hoja a texto redistribuido que no es adecuado para la producción de páginas fijas de PDF, a menos que cada página/hoja se convierta a un diseño fijo igual a una sola página de PDF.
Según la documentación oficial de EPPlus , la biblioteca no admite ninguna exportación directa a PDF.
Pero hay una opción alternativa que sería exportar Excel usando la característica beta de EPPlus 6.0, HtmlExporter y obtener el HTML y los estilos.
Esto se puede introducir en el convertidor de html a pdf como iText pdfHTML , sharkPdf (contenedor .NET para wkhtmltopdf) para exportar como PDF.