Создайте таблицу в powerpoint с помощью Apache poi - PullRequest
0 голосов
/ 02 мая 2018

Я использую 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();
    }

Буду очень признателен за любые мысли / указания.

Спасибо, Ро

...