Как создать презентацию PowePoint в формате OpenXML с помощью Apache Poi и XSLF?

Если я перейду к Apache POI XSLF, там должны быть примеры для спецификаций OLE2 и OpenXML, но есть только примеры формата Horrible Slide Layout на основе OLE2.

Может ли кто-нибудь помочь мне с примером формата макета слайда XML? API совсем другой.

Это не похоже на электронную таблицу, где нужно просто изменить реализацию HSSFWorkbook на XSSFWorkbook.

Как это будет выглядеть с реализацией XSLF? Очевидно, что POI не может создать документ с нуля, поэтому нам нужен существующий пустой фиктивный документ, верно?

      //table data              
      String[][] data = {
          {"INPUT FILE", "NUMBER OF RECORDS"},
          {"Item File", "11,559"},
          {"Vendor File", "300"},
          {"Purchase History File", "10,000"},
          {"Total # of requisitions", "10,200,038"}
      };

      SlideShow ppt = new SlideShow();

      Slide slide = ppt.createSlide();
      //create a table of 5 rows and 2 columns
      Table table = new Table(5, 2);
      for (int i = 0; i < data.length; i++) {
          for (int j = 0; j < data[i].length; j++) {
              TableCell cell = table.getCell(i, j);
              cell.setText(data[i][j]);

              RichTextRun rt = cell.getTextRun().getRichTextRuns()[0];
              rt.setFontName("Arial");
              rt.setFontSize(10);

              cell.setVerticalAlignment(TextBox.AnchorMiddle);
              cell.setHorizontalAlignment(TextBox.AlignCenter);
          }
      }

      //set table borders
      Line border = table.createBorder();
      border.setLineColor(Color.black);
      border.setLineWidth(1.0);
      table.setAllBorders(border);

      //set width of the 1st column
      table.setColumnWidth(0, 300);
      //set width of the 2nd column
      table.setColumnWidth(1, 150);

      slide.addShape(table);
      table.moveTo(100, 100);

      FileOutputStream out = new FileOutputStream(file);
      ppt.write(out);
      out.close();

person lisak    schedule 26.07.2011    source источник


Ответы (1)


Пока не реализовано, org.apache.poi версия 3.8-beta3, когда будет реализовано мне очень неизвестно.

XMLSlideShow.java

public MasterSheet createMasterSheet() throws IOException {
    throw new IllegalStateException("Not implemented yet!");
}
public Slide createSlide() throws IOException {
    throw new IllegalStateException("Not implemented yet!");
}
person lisak    schedule 26.07.2011