Pruebe en producción sin marcas de agua.
Funciona donde lo necesite.
Obtén 30 días de producto totalmente funcional.
Ténlo en funcionamiento en minutos.
Acceso completo a nuestro equipo de asistencia técnica durante la prueba del producto
En el campo del desarrollo de software, ofrecer experiencias de usuario ricas y cautivadoras requiere la capacidad de incorporar muchos tipos de medios a los programas. Dado que las presentaciones de Microsoft Office PowerPoint se utilizan con frecuencia para comunicar información, resulta ventajoso incorporar un control visor de PowerPoint en un programa C# WinForms. Este artículo explica cómo integrar un control de ese tipo, lo que permitirá a los desarrolladores añadir funciones de visualización de PowerPoint a sus aplicaciones y mejorarlas. En este artículo, vamos a crear C # PowerPoint Viewer sin necesidad de instalar MS PowerPoint Viewer.
Crear instancia de aplicación PowerPoint.
Añada la referencia Interop al proyecto
Abrir Presentación utilizando la Instancia.
Marque y Cree una carpeta de salida para los archivos de exportación.
Cargue las imágenes de las diapositivas creadas en el cuadro Imagen. Utilice el botón para desplazarse por las diapositivas.
Las presentaciones de PowerPoint se utilizan mucho en diversos campos, como la educación y la empresa. Incorporar un control visor de PowerPoint a una aplicación WinForms tiene varias ventajas.
Agregue referencias a los ensamblados necesarios primero: Para agregar la referencia Microsoft.Office.Interop.PowerPoint en su proyecto, haga clic derecho en el proyecto en Visual Studio, elija "Agregar" > "Referencia" y luego agréguelos desde la pestaña COM.
El Microsoft.Office.Interop.PowerPoint espacio de nombres ofrece clases y métodos para interactuar programáticamente con presentaciones de PowerPoint. Asegúrese de que PowerPoint está instalado en el sistema. Vamos a diseccionar y explicar en el siguiente código dado en el ejemplo anterior:
using Microsoft.Office.Core;
using Microsoft.Office.Interop.PowerPoint;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DataTableWindowsForm
{
public partial class PowerPointViewer : Form
{
private Microsoft.Office.Interop.PowerPoint.Application pptApplication = new Microsoft.Office.Interop.PowerPoint.Application();
private Presentation pptPresentation;
private string outputFolder = @"output_images";
private int slideIndex = 1;
public PowerPointViewer()
{
InitializeComponent();
}
private void DisplaySlide()
{
if (!Directory.Exists(outputFolder))
Directory.CreateDirectory(outputFolder);
// Export the slide as an png file
string tempHtmlFile = Path.Combine(outputFolder, "temp.png");
pptPresentation.Slides [slideIndex].Export(tempHtmlFile, "png", 1024, 768);
// Load the HTML file into the picture box control
pictureBox1.ImageLocation = tempHtmlFile;
}
private void Next_Click(object sender, EventArgs e)
{
int currentSlideIndex = slideIndex;
if (currentSlideIndex < pptPresentation.Slides.Count)
{
slideIndex = slideIndex + 1;
DisplaySlide();
}
}
private void PowerPointViewercs_Load(object sender, EventArgs e)
{
// Load PowerPoint Presentation
string pptFilePath = "demo.pptx"; // Path to your PowerPoint file
pptPresentation = pptApplication.Presentations.Open(pptFilePath, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);
// Load PowerPoint files here
DisplaySlide();
}
private void Previous_Click(object sender, EventArgs e)
{
int currentSlideIndex = slideIndex;
if (currentSlideIndex > 1)
{
slideIndex = slideIndex - 1;
DisplaySlide();
}
}
private void PowerPointViewercs_FormClosing(object sender, FormClosingEventArgs e)
{
// Close the PowerPoint presentation and quit the application when the form is closing
pptPresentation.Close();
pptApplication.Quit();
}
}
}
using Microsoft.Office.Core;
using Microsoft.Office.Interop.PowerPoint;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DataTableWindowsForm
{
public partial class PowerPointViewer : Form
{
private Microsoft.Office.Interop.PowerPoint.Application pptApplication = new Microsoft.Office.Interop.PowerPoint.Application();
private Presentation pptPresentation;
private string outputFolder = @"output_images";
private int slideIndex = 1;
public PowerPointViewer()
{
InitializeComponent();
}
private void DisplaySlide()
{
if (!Directory.Exists(outputFolder))
Directory.CreateDirectory(outputFolder);
// Export the slide as an png file
string tempHtmlFile = Path.Combine(outputFolder, "temp.png");
pptPresentation.Slides [slideIndex].Export(tempHtmlFile, "png", 1024, 768);
// Load the HTML file into the picture box control
pictureBox1.ImageLocation = tempHtmlFile;
}
private void Next_Click(object sender, EventArgs e)
{
int currentSlideIndex = slideIndex;
if (currentSlideIndex < pptPresentation.Slides.Count)
{
slideIndex = slideIndex + 1;
DisplaySlide();
}
}
private void PowerPointViewercs_Load(object sender, EventArgs e)
{
// Load PowerPoint Presentation
string pptFilePath = "demo.pptx"; // Path to your PowerPoint file
pptPresentation = pptApplication.Presentations.Open(pptFilePath, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);
// Load PowerPoint files here
DisplaySlide();
}
private void Previous_Click(object sender, EventArgs e)
{
int currentSlideIndex = slideIndex;
if (currentSlideIndex > 1)
{
slideIndex = slideIndex - 1;
DisplaySlide();
}
}
private void PowerPointViewercs_FormClosing(object sender, FormClosingEventArgs e)
{
// Close the PowerPoint presentation and quit the application when the form is closing
pptPresentation.Close();
pptApplication.Quit();
}
}
}
Imports Microsoft.Office.Core
Imports Microsoft.Office.Interop.PowerPoint
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.IO
Imports System.Linq
Imports System.Text
Imports System.Threading.Tasks
Imports System.Windows.Forms
Namespace DataTableWindowsForm
Partial Public Class PowerPointViewer
Inherits Form
Private pptApplication As New Microsoft.Office.Interop.PowerPoint.Application()
Private pptPresentation As Presentation
Private outputFolder As String = "output_images"
Private slideIndex As Integer = 1
Public Sub New()
InitializeComponent()
End Sub
Private Sub DisplaySlide()
If Not Directory.Exists(outputFolder) Then
Directory.CreateDirectory(outputFolder)
End If
' Export the slide as an png file
Dim tempHtmlFile As String = Path.Combine(outputFolder, "temp.png")
pptPresentation.Slides (slideIndex).Export(tempHtmlFile, "png", 1024, 768)
' Load the HTML file into the picture box control
pictureBox1.ImageLocation = tempHtmlFile
End Sub
Private Sub Next_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim currentSlideIndex As Integer = slideIndex
If currentSlideIndex < pptPresentation.Slides.Count Then
slideIndex = slideIndex + 1
DisplaySlide()
End If
End Sub
Private Sub PowerPointViewercs_Load(ByVal sender As Object, ByVal e As EventArgs)
' Load PowerPoint Presentation
Dim pptFilePath As String = "demo.pptx" ' Path to your PowerPoint file
pptPresentation = pptApplication.Presentations.Open(pptFilePath, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse)
' Load PowerPoint files here
DisplaySlide()
End Sub
Private Sub Previous_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim currentSlideIndex As Integer = slideIndex
If currentSlideIndex > 1 Then
slideIndex = slideIndex - 1
DisplaySlide()
End If
End Sub
Private Sub PowerPointViewercs_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs)
' Close the PowerPoint presentation and quit the application when the form is closing
pptPresentation.Close()
pptApplication.Quit()
End Sub
End Class
End Namespace
En primer lugar, importamos los espacios de nombres necesarios. Las operaciones de archivos son gestionadas por System.IO, System.Windows.Forms ofrece características de WinForms, mientras que las clases de Microsoft.Office para interactuar con PowerPoint están incluidas en PowerPoint. Dentro del espacio de nombres PowerPointViewerApp, definimos una clase de formulario WinForms llamada PowerPointViewer. La interfaz de usuario principal de la aplicación view PPT será este formulario.
Se anuncia que las referencias a la aplicación PowerPoint y la presentación se almacenarían en dos campos privados, pptApplication y pptPresentation. Al usar InitializeComponent(), el constructor configura los componentes visuales del formulario que fueron definidos por el diseñador e inicializa el formulario. Cuando el formulario se carga, se llama a la función InitializeComponent(). La aplicación PowerPoint (pptApplication) se inicializa y se hace accesible en este punto.
A continuación, lanzamos el archivo de PowerPoint que especifica pptFilePath. Usando pptApplication.Presentations, abrimos el archivo de PowerPoint proporcionando su ruta (pptFilePath) a la función Open(). El procedimiento devuelve un objeto Presentación, que representa la presentación abierta.
Para mostrar la primera diapositiva de la presentación de PowerPoint, usamos la función DisplaySlide(). El índice de la primera diapositiva es 1. La diapositiva que se muestra en el control Cuadro de imagen es el resultado de esta función. Utilizamos la función Export() para exportar la diapositiva seleccionada como un archivo PNG. La carpeta temporal del sistema es donde el archivo PNG exportado se almacena momentáneamente. Usando el método ImageLocation(), cargamos el archivo PNG exportado en el control PictureBox. Estas técnicas se encargan de pasar de una diapositiva a otra.
Los botones de navegación btnPrevious_Click y btnNext_Click te llevan a las diapositivas anterior y siguiente, respectivamente. Usando pptPresentation, podemos obtener el índice de la diapositiva en la variable slideIndex. Llamamos a DisplaySlide() con el índice de la diapositiva anterior o siguiente, respectivamente, si el índice de la diapositiva actual se encuentra dentro del rango válido de 1 al número total de diapositivas.
Cuando se cierra el formulario, se llama a la función Close(). Aquí, nos aseguramos de que la gestión de recursos se realice correctamente liberando los recursos del sistema al salir del programa PowerPoint y terminando la aplicación PowerPoint utilizando el método Quit().
La manipulación de archivos Excel en C# se facilita mediante la popular biblioteca .NET Excel IronXL. Es una herramienta versátil apta para una gran variedad de aplicaciones gracias a su amplio conjunto de funciones para leer, generar y modificar archivos Excel.
A continuación, repasaré algunos de los atributos clave de IronXL:
Las hojas de cálculo de Excel pueden tener celdas individuales modificadas con precisión gracias a IronXL. Los desarrolladores pueden establecer valores de celda, fórmulas, estilos, formato y otras características mediante programación.
Para obtener más información sobre la documentación, consulte aquí.
Antes de continuar, primero instalemos IronXL utilizando la Consola del Administrador de Paquetes NuGet:
Install-Package IronXL.Excel
IronXL puede ser utilizado en nuestro proyecto C# después de la instalación.
Veamos un escenario hipotético en el que queremos leer datos de un archivo de Excel utilizando IronXL. He aquí un pequeño ejemplo de cómo conseguirlo:
using IronXL;
using System;
class Program
{
static void Main(string [] args)
{
// Path to the Excel file
string excelFilePath = "sample.xlsx";
// Load the Excel file
WorkBook workbook = WorkBook.Load(excelFilePath);
// Access the first worksheet
WorkSheet worksheet = workbook.WorkSheets [0];
// Iterate through rows and columns to read data
foreach (var row in worksheet.Rows)
{
foreach (var cell in row)
{
Console.Write(cell.Value + "\t");
}
Console.WriteLine();
}
}
}
using IronXL;
using System;
class Program
{
static void Main(string [] args)
{
// Path to the Excel file
string excelFilePath = "sample.xlsx";
// Load the Excel file
WorkBook workbook = WorkBook.Load(excelFilePath);
// Access the first worksheet
WorkSheet worksheet = workbook.WorkSheets [0];
// Iterate through rows and columns to read data
foreach (var row in worksheet.Rows)
{
foreach (var cell in row)
{
Console.Write(cell.Value + "\t");
}
Console.WriteLine();
}
}
}
Imports Microsoft.VisualBasic
Imports IronXL
Imports System
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Path to the Excel file
Dim excelFilePath As String = "sample.xlsx"
' Load the Excel file
Dim workbook As WorkBook = WorkBook.Load(excelFilePath)
' Access the first worksheet
Dim worksheet As WorkSheet = workbook.WorkSheets (0)
' Iterate through rows and columns to read data
For Each row In worksheet.Rows
For Each cell In row
Console.Write(cell.Value & vbTab)
Next cell
Console.WriteLine()
Next row
End Sub
End Class
Empezaremos por añadir los espacios de nombres necesarios. El espacio de nombres IronXL contiene las clases y métodos proporcionados por la biblioteca IronXL. Se indica la ruta a sample.xlsx, el archivo Excel que queremos leer. Utilizando WorkBook, se carga el archivo de Excel. El objeto Workbook proporcionado por el método Load() representa el libro de Excel. Podemos acceder a la primera hoja de trabajo del libro usando workbook.WorkSheets [0]. Repasamos las filas y columnas de la hoja de cálculo utilizando apilados para cada uno de los bucles. Enviamos el valor de cada celda a la consola.
Para obtener más información sobre los ejemplos de código de IronXL, consulte aquí.
Varias aplicaciones de software requieren la conversión de presentaciones PowerPoint a imágenes utilizando C#. El proceso podría terminar bastante rápido tanto si se utiliza como si no el espacio de nombres Microsoft.Office.Interop.PowerPoint. Puede incorporar fácilmente la conversión de PowerPoint a imagen en sus programas C# con la ayuda de los ejemplos de código de este artículo, abriendo un mundo de posibilidades para la alteración y entrega de información.
IronXL ofrece un método simple y eficiente para realizar operaciones de Excel en C# sin necesidad de que Excel esté instalado en el sistema de destino o depender de la biblioteca Interop. Con su completo conjunto de funciones y su API de fácil uso, IronXL es una herramienta muy útil para los desarrolladores que trabajan con datos de Excel en aplicaciones C#. Simplifica tareas como la lectura, escritura y edición de archivos Excel. Para los proyectos de desarrollo relacionados con Excel, IronXL proporciona una solución estable que aumenta la productividad y la flexibilidad, tanto si procesa datos como si elabora informes o automatiza tareas de hojas de cálculo.
IronXL puso a disposición de los usuarios una edición comunitaria gratuita con restricciones para uso no comercial. Las versiones de pago comienzan en $749 y se pueden obtener mediante suscripción o esquemas de licenciamiento perpetuo. Funcionan mejor y ofrecen más funciones y asistencia. IronXL también ofrece una licencia de prueba gratuita. Para obtener información completa y actualizada sobre las licencias, por favor visite la página de licencias. Visite este sitio web para obtener más información sobre los productos de Iron Software.