Apache POI es la API de Java para el trabajo con archivos de Microsoft como son Word, Excel y Power Point.
Apache POI se encuentra en la versión 3.17 compatible con Java 6. El próximo lanzamiento sera la 4.0.0 y requerirá Java 8 o superior.
Apache POI puede utilizarse descargando su librería desde este enlace (29 MB binarios y 92 MB las fuentes) o usarse Maven para integrarlo al proyecto de la siguiente forma:
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency>
A continuación un sencillo ejemplo pata la creación de un documento Power Point con un slide, texto, imágenes y tabla:
import java.awt.Rectangle; import java.io.FileInputStream; import java.io.FileOutputStream; import java.awt.Color; import java.awt.Dimension; import java.io.File; import java.io.IOException; import org.apache.poi.sl.usermodel.TextParagraph; import org.apache.poi.xslf.usermodel.XMLSlideShow; import org.apache.poi.xslf.usermodel.XSLFSlide; import org.apache.poi.xslf.usermodel.XSLFTextBox; import org.apache.poi.xslf.usermodel.XSLFTextParagraph; import org.apache.poi.xslf.usermodel.XSLFTextRun; import org.apache.poi.sl.usermodel.PictureData; import org.apache.poi.util.IOUtils; import org.apache.poi.xslf.usermodel.XSLFHyperlink; import org.apache.poi.xslf.usermodel.XSLFPictureData; import org.apache.poi.xslf.usermodel.XSLFPictureShape; import org.apache.poi.xslf.usermodel.XSLFTable; import org.apache.poi.xslf.usermodel.XSLFTableCell; import org.apache.poi.xslf.usermodel.XSLFTableRow; /** * @see https://www.jc-mouse.net/ * @author mouse */ public class Main { public static void main(String[] args) { final String presentacion_ppt="Mi_presentacion_007"; final int ANCHO = 1280; final int ALTO = 720; try { /** * Crea nueva presentacion */ XMLSlideShow ppt = new XMLSlideShow(); ppt.setPageSize(new Dimension(ANCHO,ALTO)); /** * Crea un slide */ XSLFSlide slide1 = ppt.createSlide(); /** * Imagen de fondo */ XSLFPictureData psssssd = ppt.addPicture(new File("e:\\DIRECCION DE TU IMAGEN\\fondoppt.jpg"), PictureData.PictureType.JPEG); XSLFPictureShape pictssure = slide1.createPicture(psssssd); pictssure.setAnchor(new Rectangle(0, 0, ANCHO, ALTO)); /** * Texto "El Titulo de la presentación" */ XSLFTextBox textBox = slide1.createTextBox(); textBox.clearText(); //posicion y dimensiones textBox.setAnchor(new Rectangle(240, 560, 1000, 70)); //color de fondo textBox.setFillColor(new Color(105,124,138)); //parrafo XSLFTextParagraph parrafo = textBox.addNewTextParagraph(); //alineación del texto parrafo.setFontAlign(TextParagraph.FontAlign.CENTER); parrafo.setTextAlign(TextParagraph.TextAlign.CENTER); //texto individual XSLFTextRun texto = parrafo.addNewTextRun(); texto.setText("COMPUTACION EN LA NUBE"); //estilos texto.setUnderlined(true); texto.setBold(true); texto.setFontColor(Color.WHITE); texto.setFontSize(48.); /** * Texto con Link */ XSLFTextBox textbox2 = slide1.createTextBox(); textbox2.clearText(); textbox2.setAnchor(new Rectangle(440, 630, 480, 40)); XSLFTextParagraph parrafo2 = textbox2.addNewTextParagraph(); XSLFTextRun texto1 = parrafo2.addNewTextRun(); texto1.setText("Para más información visite "); texto1.setFontSize(30.); XSLFTextRun texto2 = parrafo2.addNewTextRun(); XSLFHyperlink link = texto2.createHyperlink(); link.setAddress("https://www.jc-mouse.net/"); texto2.setText("JC Mouse"); texto2.setBold(true); texto2.setFontSize(30.); /** * Imagen */ byte[] pictureData = IOUtils.toByteArray(new FileInputStream("e:\\DIRECCION DE TU IMAGEN\\cloud.png")); XSLFPictureData pd = ppt.addPicture(pictureData, PictureData.PictureType.PNG); XSLFPictureShape picture = slide1.createPicture(pd); picture.setAnchor(new Rectangle(50, 250, 300, 300)); /** * Tabla */ XSLFTable tabla = slide1.createTable(); tabla.setAnchor(new Rectangle(600, 100, 460, 320)); XSLFTextParagraph p = textBox.addNewTextParagraph(); //encabezado int columnas = 3; XSLFTableRow fila_encabezado = tabla.addRow(); fila_encabezado.setHeight(40); for (int i = 1; i <= columnas; i++) { XSLFTableCell celda_encabezado = fila_encabezado.addCell(); celda_encabezado.setFillColor(new Color(0,0,0)); XSLFTextParagraph tp = celda_encabezado.addNewTextParagraph(); XSLFTextRun tr = tp.addNewTextRun(); tr.setText("Encabezado " + i); tr.setFontColor(new Color(255,255,255)); tr.setBold(true); tabla.setColumnWidth(i-1, 200); } //contenido int filas = 6; for (int fila = 1; fila <= filas; fila++) { XSLFTableRow tr = tabla.addRow(); tr.setHeight(50); for (int columna = 0; columna < columnas; columna++) { XSLFTableCell celda_contenido = tr.addCell(); celda_contenido.setFillColor((fila%2==0)?new Color(202,233,242):new Color(235,233,245)); XSLFTextParagraph tp = celda_contenido.addNewTextParagraph(); XSLFTextRun trc = tp.addNewTextRun(); trc.setText("Celda [" + fila + "," + (columna+1)+"]" ); } } /** * Guardando archivo PPT */ File file = new File("E:\\DIRECCION PARA GUARDAR ARCHIVO PPTX\\"+presentacion_ppt+".pptx"); FileOutputStream out = new FileOutputStream(file); ppt.write(out); System.out.println("Archivo PPT creado"); out.close(); } catch (IOException ex) { ex.printStackTrace(); } } }
Y tenemos:
El código fuente completo más los recursos utilizados en este ejemplo los puedes descargar desde este <enlace pobre>
enjoy!!!
Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.
Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye
Enjoy! :)
Python es un lenguaje de programación interpretado, de programación multiparadigma, ya que soporta orientación a objeto...
De los diferentes IDE’s que existen para crear aplicaciones para android, lamentablemente Netbeans es una de las m...
«Mouse Responde…» simula ser un alma en pena que responde cualquier pregunta que le hagan, al estilo del juego de...
No se puede negar la popularidad que ganaron las aplicaciones de JavaScript en los últimos años, y las bibliotecas dispo...
En este post personalizaremos un componente JComboBox para que sus elementos acepten tablas (JTable) en lugar de texto s...
Java Excel API es un API para java que permite a los desarrolladores leer y escribir en hojas de cálculo Excel. jexcelap...
Si trabajas con redes sociales (RRSS) a continuación te muestro tres herramintas gratuitas que te ayudaran a la hora de...
Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...
En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...
Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...