使用Apache poi在powerpoint中创建一个表

时间:2018-05-02 14:52:11

标签: apache-poi powerpoint

我正在使用Java v8和" org.apache.poi"和" poi-ooxml" (均为3.9版本)。我正在尝试使用包含表格的幻灯片创建一个powerpoint。

我可以让powerpoint文件创建好,但幻灯片是空的,但是右上角有一个小黑盒子。我猜测我错过了一些小东西,却看不出它是什么。我已经尝试过一些网络上的例子,它们看起来和我看到的一样。

这是我在Powerpoint幻灯片中看到的:

enter image description here

我的代码如下:

    XMLSlideShow powerpoint = new XMLSlideShow();
    XSLFSlide slide = powerpoint.createSlide();

    XSLFTable table = slide.createTable();
    table.setAnchor(new Rectangle(50, 50, 800, 800));

    int numColumns = 3;
    int numRows = 5;
    XSLFTableRow headerRow = table.addRow();
    headerRow.setHeight(50);
    // header
    for (int i = 0; i < numColumns; i++) {
        XSLFTableCell th = headerRow.addCell();
        XSLFTextParagraph p = th.addNewTextParagraph();
        p.setTextAlign(TextAlign.CENTER);
        XSLFTextRun r = p.addNewTextRun();
        r.setText("Header " + (i + 1));
        r.setFontSize(20);
        r.setFontColor(Color.white);
        th.setFillColor(new Color(79, 129, 189));
        table.setColumnWidth(i, 150);
    }

    // rows
    for (int rownum = 0; rownum < numRows; rownum++) {
        XSLFTableRow tr = table.addRow();
        tr.setHeight(50);
        // header
        for (int i = 0; i < numColumns; i++) {
            XSLFTableCell cell = tr.addCell();
            XSLFTextParagraph p = cell.addNewTextParagraph();
            XSLFTextRun r = p.addNewTextRun();

            r.setText("Cell " + (i + 1));
            if (rownum % 2 == 0) {
                cell.setFillColor(new Color(208, 216, 232));
            }
            else {
                cell.setFillColor(new Color(233, 247, 244));
            }
        }
    }

    try {
        try (FileOutputStream out = new FileOutputStream("c:\\myFile.pptx")) 
         {
            try {
                powerpoint.write(out);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

任何想法/指导都会非常感激。

谢谢Ro

0 个答案:

没有答案