DEV Community

E-iceblue Product Family
E-iceblue Product Family

Posted on

Create Tables in PowerPoint in Java

Tables in electronic documents are usually used for displaying tabular data. However, in some specific types of documents, such as PowerPoint and HTML, tables can also be used for creating modern flat graphics.

This article will show you how to create an ordinary table and a stylish table graphic in a PowerPoint document by using Free Spire.Presentation for Java.

Create a Normal Table

import com.spire.presentation.*;

public class NormalTable {

    public static void main(String[] args) throws Exception {

        //create a Presentation instance
        Presentation presentation = new Presentation();
        presentation.getSlideSize().setType(SlideSizeType.SCREEN_16_X_9);

        //define column widths and row heights
        Double[] widths = new Double[]{100d, 100d, 100d, 150d, 100d,100d};
        Double[] heights = new Double[]{15d, 15d, 15d, 15d, 15d};

        //add a table
        ITable table = presentation.getSlides().get(0).getShapes().appendTable((float)(presentation.getSlideSize().getSize().getWidth() - 650)/2, 40, widths, heights);

        //define data
        String[][] data = new String[][]
                {
                        {"Emp#", "Name", "Job", "HiringD", "Salary", "Dept#"},
                        {"7369", "Andrews", "Engineer", "05/12/2006", "1600.00", "20"},
                        {"7499", "Nero", "Technician", "03/23/2006", "1800.00", "30"},
                        {"7521", "Adams", "Technician", "11/03/2007", "2400.00", "30"},
                        {"7566", "Martin", "Manager", "12/21/2007", "2600.00", "10"},
                };

        for (int i = 0; i < data.length; i++) {
            for (int j = 0; j < data[i].length; j++) {

                //fill the table with data
                table.get(j, i).getTextFrame().setText(data[i][j]);

                //align text in each cell to center
                table.get(j, i).getTextFrame().getParagraphs().get(0).setAlignment(TextAlignmentType.CENTER);
            }
       }

        //apply built-in table style
        table.setStylePreset(TableStylePreset.DARK_STYLE_2_ACCENT_3_ACCENT_4);

        //save the document
        presentation.saveToFile("output/NormalTable.pptx", FileFormat.PPTX_2013);
    }
}

Output:
Format text content

Create a Table Graphic

import com.spire.presentation.*;
import com.spire.presentation.drawing.FillFormatType;
import com.spire.presentation.drawing.IImageData;
import com.spire.presentation.drawing.PictureFillType;

import javax.imageio.ImageIO;
import java.awt.*;
import java.io.FileInputStream;
import java.util.ArrayList;

public class TableGraphic {

    public static void main(String[] args) throws Exception {

        //create a Presentation instance
        Presentation presentation = new Presentation();
        presentation.getSlideSize().setType(SlideSizeType.SCREEN_16_X_9);

        //define column widths and row heights
        Double[] widths = new Double[]{150d, 150d, 150d, 150d};
        Double[] heights = new Double[]{120d, 50d, 20d, 80d, 3d};

        //add a table
        ITable table = presentation.getSlides().get(0).getShapes().appendTable((float) (presentation.getSlideSize().getSize().getWidth() - 600) / 2, (float) (presentation.getSlideSize().getSize().getHeight() - 273) / 2, widths, heights);

        //set the table style to none
        table.setStylePreset(TableStylePreset.NONE);

        //create an arraylist of colors
        ArrayList<Color> colorList = new ArrayList<Color>();
        colorList.add(new Color(255, 69, 0));
        colorList.add(new Color(70, 130, 180));
        colorList.add(new Color(255, 140, 0));
        colorList.add(new Color(34, 139, 34));

        //create an arraylist of image data
        ArrayList<IImageData> imageData = new ArrayList<IImageData>();
        imageData.add(presentation.getImages().append(ImageIO.read(new FileInputStream("C:\\Users\\Administrator\\Desktop\\Question-mark.png"))));
        imageData.add(presentation.getImages().append(ImageIO.read(new FileInputStream("C:\\Users\\Administrator\\Desktop\\Explore-mark.png"))));
        imageData.add(presentation.getImages().append(ImageIO.read(new FileInputStream("C:\\Users\\Administrator\\Desktop\\Plan-mark.png"))));
        imageData.add(presentation.getImages().append(ImageIO.read(new FileInputStream("C:\\Users\\Administrator\\Desktop\\Go-mark.png"))));

        //create two string array to store text
        String[] subtitles = new String[]{"KNOW", "EXPLORE", "PLAN", "GO!"};
        String[] details = new String[]{
                "Who am I? Get to know your interests, skills, and strengths.",
                "Where do I want to go? Explore career pathways and education opportunities.",
                "How do I get there? Set your route! Set goals, choose courses, join clubs and activities, write resumes, obtain financing.",
                "Recalculate as needed."
        };

        //loop through the columns
        for (int i = 0; i < 4; i++) {

            //fill the cells of the first row with background colors
            table.get(i, 0).getFillFormat().setFillType(FillFormatType.SOLID);
            table.get(i, 0).getFillFormat().getSolidColor().setColor(colorList.get(i));
            //insert formatted text to the cells of the first row
            table.get(i, 0).getTextFrame().setText(String.format("0%d", i + 1));
            table.get(i, 0).getTextFrame().getParagraphs().get(0).setAlignment(TextAlignmentType.CENTER);
            table.get(i, 0).setTextAnchorType(TextAnchorType.CENTER);
            table.get(i, 0).getTextFrame().getParagraphs().get(0).getTextRanges().get(0).setLatinFont(new TextFont("Calibri"));
            table.get(i, 0).getTextFrame().getParagraphs().get(0).getTextRanges().get(0).setFontHeight(60f);
            table.get(i, 0).getTextFrame().getParagraphs().get(0).getTextRanges().get(0).getFill().setFillType(FillFormatType.SOLID);
            table.get(i, 0).getTextFrame().getParagraphs().get(0).getTextRanges().get(0).getFill().getSolidColor().setColor(Color.white);

            //fill the cells of the second row with pictures
            table.get(i, 1).getFillFormat().setFillType(FillFormatType.PICTURE);
            table.get(i, 1).getFillFormat().getPictureFill().setFillType(PictureFillType.STRETCH);
            table.get(i, 1).getFillFormat().getPictureFill().getPicture().setEmbedImage(imageData.get(i));

            //insert formatted text to the cells of the third row
            table.get(i, 2).getTextFrame().setText(subtitles[i]);
            table.get(i, 2).getTextFrame().getParagraphs().get(0).setAlignment(TextAlignmentType.CENTER);
            table.get(i, 2).getTextFrame().getParagraphs().get(0).getTextRanges().get(0).setLatinFont(new TextFont("Calibri"));
            table.get(i, 2).getTextFrame().getParagraphs().get(0).getTextRanges().get(0).setFontHeight(20f);
            table.get(i, 2).getTextFrame().getParagraphs().get(0).getTextRanges().get(0).getFill().setFillType(FillFormatType.SOLID);
            table.get(i, 2).getTextFrame().getParagraphs().get(0).getTextRanges().get(0).getFill().getSolidColor().setColor(colorList.get(i));

            //insert formatted text to the cells of the fourth row
            table.get(i, 3).getTextFrame().setText(details[i]);
            table.get(i, 3).getTextFrame().getParagraphs().get(0).getTextRanges().get(0).setLatinFont(new TextFont("Calibri"));
            table.get(i, 3).getTextFrame().getParagraphs().get(0).getTextRanges().get(0).setFontHeight(11f);
            table.get(i, 3).getTextFrame().getParagraphs().get(0).getTextRanges().get(0).getFill().setFillType(FillFormatType.SOLID);
            table.get(i, 3).getTextFrame().getParagraphs().get(0).getTextRanges().get(0).getFill().getSolidColor().setColor(new Color(112,128,144));

            //fill the cells of the fifth row with background colors
            table.get(i, 4).getFillFormat().setFillType(FillFormatType.SOLID);
            table.get(i, 4).getFillFormat().getSolidColor().setColor(colorList.get(i));
            //set the font size of the fifth row smaller than the row height
            table.get(i, 4).getTextFrame().getParagraphs().get(0).getTextRanges().get(0).setFontHeight(2f);

            //loop through the rows
            for (int j = 0; j < 5; j++) {

                //set the border style of each cell to none
                table.get(i, j).getBorderTop().setFillType(FillFormatType.NONE);
                table.get(i, j).getBorderBottom().setFillType(FillFormatType.NONE);
                table.get(i, j).getBorderLeft().setFillType(FillFormatType.NONE);
                table.get(i, j).getBorderRight().setFillType(FillFormatType.NONE);

                //fill the third and the fourth row with background color
                if (j != 0 & j!=1 & j != 4) {
                    table.get(i, j).getFillFormat().setFillType(FillFormatType.SOLID);
                    table.get(i, j).getFillFormat().getSolidColor().setColor(new Color(248, 248, 255));
                }

            }
        }

        //save to file
        presentation.saveToFile("output/GriddedGraphic.pptx", FileFormat.PPTX_2013);
    }

}

Output:

Top comments (0)