2016-10-12 45 views
0

是否有一个很好的示例,演示如何使用apache POI在PPT上绘制折线图?如何使用Apache POI在PPT上编写折线图

我正在使用apache POIs XSLFSlide来生成PPT。我没有看到一个使用XSLFSlide绘制线条的例子。

+0

“是否有一个很好的示例显示如何使用apache POI在PPT上绘制折线图?”阅读就好像你想要一个折线图。 “...使用XSLFSlide绘制线条的示例”读取就像您只需绘制一条线一样。那么是什么意思? –

回答

0

一般来说,这个条形图具有相同的概念。只需更改为多行

public static void main(String[] args) throws Exception { 
    HSLFSlideShow ppt = new HSLFSlideShow(); 

    try { 
     //bar chart data. The first value is the bar color, the second is the width 
     Object[] def = new Object[]{ 
      Color.yellow, 40, 
      Color.green, 60, 
      Color.gray, 30, 
      Color.red, 80, 
     }; 

     HSLFSlide slide = ppt.createSlide(); 

     HSLFGroupShape group = new HSLFGroupShape(); 
     //define position of the drawing in the slide 
     Rectangle bounds = new java.awt.Rectangle(200, 100, 350, 300); 
     group.setAnchor(bounds); 
     group.setInteriorAnchor(new java.awt.Rectangle(0, 0, 100, 100)); 
     slide.addShape(group); 
     Graphics2D graphics = new PPGraphics2D(group); 

     //draw a simple bar graph 
     int x = 10, y = 10; 
     graphics.setFont(new Font("Arial", Font.BOLD, 10)); 
     for (int i = 0, idx = 1; i < def.length; i+=2, idx++) { 
      graphics.setColor(Color.black); 
      int width = ((Integer)def[i+1]).intValue(); 
      graphics.drawString("Q" + idx, x-5, y+10); 
      graphics.drawString(width + "%", x + width+3, y + 10); 
      graphics.setColor((Color)def[i]); 
      graphics.fill(new Rectangle(x, y, width, 10)); 
      y += 15; 
     } 
     graphics.setColor(Color.black); 
     graphics.setFont(new Font("Arial", Font.BOLD, 14)); 
     graphics.draw(group.getInteriorAnchor()); 
     graphics.drawString("Performance", x + 30, y + 10); 

     FileOutputStream out = new FileOutputStream("hslf-graphics.ppt"); 
     ppt.write(out); 
     out.close(); 
    } finally { 
     ppt.close(); 
    } 
}