2016-10-12 5 views
0

Gibt es ein gutes Beispiel, wie man ein Liniendiagramm auf PPT mit Apache POI zeichnet?Wie schreibe ich ein Liniendiagramm auf PPT mit Apache POI

Ich benutze Apache POIs XSLFSlide, um PPT zu generieren. Ich sehe kein Beispiel, um mit XSLFSlide eine Linie zu zeichnen.

+0

"Gibt es ein gutes Beispiel, wie man ein Liniendiagramm auf PPT mit Apache POI zeichnet?" Liest so, als ob Sie ein Liniendiagramm wünschen. "... Beispiel zum Zeichnen einer Linie mit XSLFSlide" Liest so, als ob Sie einfach eine Linie zeichnen möchten. Also was ist gemeint? –

Antwort

0

Im Allgemeinen hat dieses Balkendiagramm das gleiche Konzept. Ändern Sie einfach zu mehreren Zeilen

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(); 
    } 
}