GVKun编程网logo

在PowerPoint中加入背景音乐让它自动环循播放的图文方法(如何在ppt加入背景音乐循环播放)

24

本文将介绍在PowerPoint中加入背景音乐让它自动环循播放的图文方法的详细情况,特别是关于如何在ppt加入背景音乐循环播放的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个

本文将介绍在PowerPoint中加入背景音乐让它自动环循播放的图文方法的详细情况,特别是关于如何在ppt加入背景音乐循环播放的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于c# – 在powerpoint中的文本框中查找动画的开始/结束字符索引、C#添加:在PowerPoint中更改形状的选择、Java 给 PowerPoint 文档添加背景颜色和背景图片、Java使用APACHE POI在PowerPoint中创建图表的知识。

本文目录一览:

在PowerPoint中加入背景音乐让它自动环循播放的图文方法(如何在ppt加入背景音乐循环播放)

在PowerPoint中加入背景音乐让它自动环循播放的图文方法(如何在ppt加入背景音乐循环播放)

随着PPT幻灯片一页一页的翻滚,再配上一段美妙的音乐,这样一来就可以让我们在演示或演讲时更容易吸引听众,讲课时听众也不会觉得枯燥乏味。那么我们如何才能在PowerPoint中插入背景音乐呢?

随着PPT幻灯片一页一页的翻滚,再配上一段美妙的音乐,这样一来就可以让我们在演示或演讲时更容易吸引听众,讲课时听众也不会觉得枯燥乏味。那么我们如何才能在PowerPoint中插入背景音乐呢?就算插入了音乐我们又该如何让它自动循环播放呢?今日Word联盟就来带领大家一起学习如何在Powerpoint中加入背景音乐,还有各种添加音乐时的需求与设置!

PPT中加入背景音乐技巧

①首先,选择PPT第一个页面,然后单击菜单栏的“插入”中的“影片和声音”,在弹出的菜单中再选择“文件中的声音”;(如下图)

②此时,会弹出“插入声音”的窗口,我们在里面找音乐文件的路径(至于音乐文件,大家可以在网上去下载各种歌曲或音乐,都可以插入PPT中),选择后单击确定;(如下图)

③单击确定后你会发现在PowerPoint中出现了个“小喇叭”,而且出现了个对话框,上面有两个选项,“自动”和“在单击时”,顾名思义“自动”意思是在演示幻灯片时音乐会自动播放,“在单击时”意思是在演示时单击鼠标左键音乐文件才开始自动播放,这里看个人需求来设置。

PPT单击鼠标左键音乐会停止怎么办?

这里有个常见问题要提醒大家,一般的情况下我们都会选择“自动”,但是在自动播放幻灯片时单击左键,你会发现音乐停止了,这跟没加入音乐有什么区别呢?别急,下面再来教大家解决这个问题。

①右键单击“小喇叭”在弹出的下拉列表中选择“自定义动画”,在右边弹出的“自定义动画”中我们单击音乐旁边的“小三角”按钮,然后在弹出的菜单中选择“效果选项”;(如下图)

②在弹出的“播放 声音”选项卡中,我们将“停止播放”下面的“在  张幻灯片后”,这里面设置数值大点,如下图红色区域,可以跟我一样设置成“999”然后确定,这时无论你怎样单击左键或者空格,音乐都不会停止了,除非播放完毕音乐才会停止。

PPT中设置“循环播放音乐”和“隐藏小喇叭图标”方法

右键单击“小喇叭”图标,然后选择“编辑声音对象”,进入“声音选项”后我们将“循环播放,直到停止”、“幻灯片放映时隐藏声音图标”前面的钩钩上,确定即可。

此后,在播放幻灯片时,小喇叭图标会自动隐藏;而且当音乐播放完毕后,会再次重新循环播放!

好了,此篇PowerPoint中加入背景音乐就讲到这里,在PowerPoint中设置音乐方面的小问题特别多,Word联盟随后会推出更多与此相关技巧希望大家多加关注!

总结

以上是小编为你收集整理的在PowerPoint中加入背景音乐让它自动环循播放的图文方法全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

c# – 在powerpoint中的文本框中查找动画的开始/结束字符索引

c# – 在powerpoint中的文本框中查找动画的开始/结束字符索引

以下是一些示例幻灯片的屏幕截图.我有一个关于“比萨”这个词的动画.我试图通过字符编号找到字符串中的位置.

我的代码来获取有关动画的信息:

foreach (PowerPoint.Effect effect in slide.TimeLine.MainSequence)
        {
            animationMap[animationCount] = new WBLAnimation(effect,shapeMap[effect.Shape.Id],effect.TextRangeStart,effect.TextRangeStart+effect.TextRangeLength);
            animationCount++;
        }

Pizza应该从字符11开始,但TextRangeStart属性声称它从字符80开始.TextRangeLength也是错误的.它声称长度为71个字符,应该是6个(长度为“披萨?”).对我而言,这似乎是计算文本范围的整个长度而不是动画部分.

WBLAnimation只是一个帮助类.它具有效果,形状,形状的起始位置和结束位置.这最终需要重构.这只是我如何获取这些信息的一个例子,所以有人可能会指出我做错了什么.

有没有其他方法可以找到动画片在字符串中的位置?

谢谢!!!

解决方法

我相信动画总是适用于物体.这意味着你没有’Pizza’这个词的动画.您在对象(文本框?)上有一个动画,其中包含“Pizza”一词.

C#添加:在PowerPoint中更改形状的选择

C#添加:在PowerPoint中更改形状的选择

如何解决C#添加:在PowerPoint中更改形状的选择?

当前,我正在编写一些较小的代码来更改PowerPoint中形状的位置。

var refshape = Globals.ThisAddIn.Application.ActiveWindow.Selection.ShapeRange[1];
foreach (Shape shp1 in Globals.ThisAddIn.Application.ActiveWindow.Selection.ShapeRange)
                        shp1.Left = refshape.Left;

该函数本身就像一个吊饰一样工作,将选择中的所有形状对准refshape。 但是,在功能完成之后,感觉形状的选择就搞砸了。

这些形状似乎仍处于选中状态,但是我无法对其执行任何操作(例如,使用Strg + G对其进行分组)。要执行此操作,我必须Strg +单击页面上的某个位置(选择保持不变),然后将它们分组。

有人知道吗,为什么会这样,我可以添加什么样的代码,所以形状在函数后表现正常?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

Java 给 PowerPoint 文档添加背景颜色和背景图片

Java 给 PowerPoint 文档添加背景颜色和背景图片

在制作Powerpoint文档时,背景是非常重要的,统一的背景能让Powerpoint 演示文稿看起来更加干净美观。本文将详细讲述如何在Java应用程序中使用免费的Free Spire.Presentation for Java为幻灯片设置纯色背景颜色,渐变背景颜色以及添加背景图片。

Jar文件导入方法

方法一:

下载最新的Free Spire.Presentation for Java包并解压缩然后从lib文件夹下,Spire.Presentation.jar包导入到你的Java应用程序中。导入成功如下图所示

方法二:

通过Maven仓库安装导入详细的操作步骤请参考链接:

https://www.e-iceblue.cn/licensing/install-spirepdf-for-java-from-maven-repository.html

 

设置纯色背景颜色

 

import com.spire.presentation.*;
import com.spire.presentation.drawing.*;

import java.awt.*;

public class PPTbackground {

    public static void main(String[] args) throws Exception {

        //加载PowerPoint文档
        Presentation ppt = new Presentation();
        ppt.loadFromFile("Sample.pptx");

        //获取幻灯片的数量
        int slideCount = ppt.getSlides().getCount();

        ISlide slide = null;

        //遍历幻灯片,为每张幻灯片设置纯色背景色
        for(int i = 0; i < slideCount;i++) {
            slide = ppt.getSlides().get(i);
            slide.getSlideBackground().setType(BackgroundType.CUSTOM);

            //设置纯色背景填充
            slide.getSlideBackground().getFill().setFillType(FillFormatType.SOLID);
            slide.getSlideBackground().getFill().getSolidColor().setColor(Color.lightGray);
        }
        //保存结果文档
        ppt.saveToFile("纯色背景.pptx", FileFormat.PPTX_2010);
    }
}

 

纯色背景效果图:

 

 

 

设置渐变背景颜色

 

import com.spire.presentation.*;
import com.spire.presentation.drawing.*;

import java.awt.*;

public class PPTbackground {

    public static void main(String[] args) throws Exception {

        //加载PowerPoint文档
        Presentation ppt = new Presentation();
        ppt.loadFromFile("Sample.pptx");

        //获取幻灯片的数量
        int slideCount = ppt.getSlides().getCount();

        ISlide slide = null;

        //遍历幻灯片,为每张幻灯片设置渐变背景色
        for(int i = 0; i < slideCount;i++) {
            slide = ppt.getSlides().get(i);
            slide.getSlideBackground().setType(BackgroundType.CUSTOM);

            //设置渐变背景色填充
        slide.getSlideBackground().getFill().setFillType(FillFormatType.GRADIENT);
        slide.getSlideBackground().getFill().getGradient().getGradientStops().append(0, Color.WHITE);
        slide.getSlideBackground().getFill().getGradient().getGradientStops().append(1, Color.LIGHT_GRAY);

        }
        //保存结果文档
        ppt.saveToFile("渐变色背景.pptx", FileFormat.PPTX_2010);
    }
}

 

渐变背景色效果图:

 

 

 

添加背景图片

 

import com.spire.presentation.*;
import com.spire.presentation.drawing.*;

public class PPTbackground {

    public static void main(String[] args) throws Exception {
        //加载PowerPoint文档
        Presentation ppt = new Presentation();
        ppt.loadFromFile("Sample.pptx");

        //获取幻灯片的数量
        int slideCount = ppt.getSlides().getCount();
        ISlide slide = null;

        //遍历幻灯片,为每张幻灯片添加背景图片
        for(int i = 0; i < slideCount;i++) {
            slide = ppt.getSlides().get(i);
            slide.getSlideBackground().setType(BackgroundType.CUSTOM);

            //设置图片背景填充
            slide.getSlideBackground().getFill().setFillType(FillFormatType.PICTURE);
            slide.getSlideBackground().getFill().getPictureFill().setAlignment(RectangleAlignment.NONE);
            slide.getSlideBackground().getFill().getPictureFill().setFillType(PictureFillType.STRETCH);
            slide.getSlideBackground().getFill().getPictureFill().getPicture().setUrl((new java.io.File("1.png")).getAbsolutePath());
        }

        //保存结果文档
        ppt.saveToFile("背景图片.pptx", FileFormat.PPTX_2010);
    }
}

 

添加背景图效果:

 

 

 

 

 

Java使用APACHE POI在PowerPoint中创建图表

Java使用APACHE POI在PowerPoint中创建图表

我们如何使用apache poi在Java中的ppt中创建图表。我们使用哪种POI API。下面是我用来创建文本框的代码

XSLFSlide slide = pptx.createSlide();XSLFTextShape textShape = slide.createTextBox();textShape.setText(data);

幻灯片对象不包含任何用于创建图表的api。

有什么解决办法吗?

提前致谢

答案1

小编典典

到现在为止,XSLFChartShapePowerPoint幻灯片中还没有可用的东西apache poi

不过,当然,如果一个人知道所述的内部结构*.pptx ZIP归档文件和XML在其中,则有可能使用从头创建这个apache poi
OPCPackage类和低电平CT*从类org.openxmlformats.schemas.drawingml.x2006.*org.openxmlformats.schemas.presentationml.x2006.*

下面的代码将执行此操作,并创建一个包含饼图和条形图的幻灯片。

这只是一个草稿,仅显示了该方法。

import java.io.*;import org.apache.poi.*;import org.apache.poi.xslf.usermodel.*;import org.apache.poi.util.*;import org.apache.poi.openxml4j.opc.*;import static org.apache.poi.POIXMLTypeLoader.DEFAULT_XML_OPTIONS;import org.apache.xmlbeans.*;import org.openxmlformats.schemas.drawingml.x2006.chart.*;import org.openxmlformats.schemas.drawingml.x2006.main.*;import org.openxmlformats.schemas.presentationml.x2006.main.*;import javax.xml.namespace.QName;import java.util.regex.Pattern;import java.awt.geom.Rectangle2D;import java.awt.Rectangle;public class CreatePPTXCharts { public CreatePPTXCharts() throws Exception {  XMLSlideShow slideShow = new XMLSlideShow();  XSLFSlide slide = slideShow.createSlide();  MyXSLFChartShape myXSLFChartShape = createXSLFChart(slide);  myXSLFChartShape.setAnchor(new Rectangle(50,100,300,300));  drawPieChart(myXSLFChartShape);  myXSLFChartShape = createXSLFChart(slide);  myXSLFChartShape.setAnchor(new Rectangle(370,100,300,300));  drawBarChart(myXSLFChartShape);  FileOutputStream out = new FileOutputStream("CreatePPTXCharts.pptx");  slideShow.write(out);  out.close(); } //a method for creating the chart XML document /ppt/charts/chart*.xml in the *.pptx ZIP archive //and creating a MyXSLFChartShape as slide shape   public MyXSLFChartShape createXSLFChart(XSLFSlide slide) throws Exception {  OPCPackage oPCPackage = slide.getSlideShow().getPackage();  int chartCount = oPCPackage.getPartsByName(Pattern.compile("/ppt/charts/chart.*")).size() + 1;  PackagePartName partName = PackagingURIHelper.createPartName("/ppt/charts/chart" + chartCount + ".xml");  PackagePart part = oPCPackage.createPart(partName, "application/vnd.openxmlformats-officedocument.drawingml.chart+xml");  MyXSLFChart myXSLFChart = new MyXSLFChart(part);  MyXSLFChartShape myXSLFChartShape = new MyXSLFChartShape(slide, myXSLFChart);  return myXSLFChartShape; } public void drawPieChart(MyXSLFChartShape myXSLFChartShape) {  CTChartSpace chartSpace = myXSLFChartShape.getMyXSLFChart().getChartSpace();  CTPieChart cTPieChart = chartSpace.addNewChart().addNewPlotArea().addNewPieChart();  cTPieChart.addNewVaryColors().setVal(true);  CTPieSer cTPieSer = cTPieChart.addNewSer();  cTPieSer.addNewIdx().setVal(0);  CTStrRef cTStrRef = cTPieSer.addNewTx().addNewStrRef();  cTStrRef.setF("Label 0");  cTStrRef.addNewStrCache().addNewPtCount().setVal(1);  CTStrVal cTStrVal = cTStrRef.getStrCache().addNewPt();  cTStrVal.setIdx(0);  cTStrVal.setV("Val");  cTStrRef = cTPieSer.addNewCat().addNewStrRef();  cTStrRef.setF("Categories");  cTStrRef.addNewStrCache().addNewPtCount().setVal(3);  for (int r = 1; r < 4; r++) {    cTStrVal = cTStrRef.getStrCache().addNewPt();   cTStrVal.setIdx(r-1);   cTStrVal.setV("Cat" + r);  }  CTNumRef cTNumRef = cTPieSer.addNewVal().addNewNumRef();  cTNumRef.setF("0");  cTNumRef.addNewNumCache().addNewPtCount().setVal(3);  for (int r = 1; r < 4; r++) {    CTNumVal cTNumVal = cTNumRef.getNumCache().addNewPt();   cTNumVal.setIdx(r-1);   cTNumVal.setV("" + (10*r));  } } public void drawBarChart(MyXSLFChartShape myXSLFChartShape) {  CTChartSpace chartSpace = myXSLFChartShape.getMyXSLFChart().getChartSpace();  CTChart cTChart = chartSpace.addNewChart();  CTPlotArea cTPlotArea = cTChart.addNewPlotArea();  CTBarChart cTBarChart = cTPlotArea.addNewBarChart();  cTBarChart.addNewVaryColors().setVal(true);  cTBarChart.addNewBarDir().setVal(STBarDir.COL);  for (int r = 1; r < 5; r++) {   CTBarSer cTBarSer = cTBarChart.addNewSer();   CTStrRef cTStrRef = cTBarSer.addNewTx().addNewStrRef();   cTStrRef.setF("Label " + r);   cTStrRef.addNewStrCache().addNewPtCount().setVal(1);   CTStrVal cTStrVal = cTStrRef.getStrCache().addNewPt();   cTStrVal.setIdx(0);   cTStrVal.setV("Val" + r);   cTBarSer.addNewIdx().setVal(r-1);     cTStrRef = cTBarSer.addNewCat().addNewStrRef();   cTStrRef.setF("Categories");   cTStrRef.addNewStrCache().addNewPtCount().setVal(3);   for (int c = 1; c < 4; c++) {     cTStrVal = cTStrRef.getStrCache().addNewPt();    cTStrVal.setIdx(c-1);    cTStrVal.setV("Cat" + c);   }   CTNumRef cTNumRef = cTBarSer.addNewVal().addNewNumRef();   cTNumRef.setF("" + r);   cTNumRef.addNewNumCache().addNewPtCount().setVal(3);   for (int c = 1; c < 4; c++) {     CTNumVal cTNumVal = cTNumRef.getNumCache().addNewPt();    cTNumVal.setIdx(c-1);    cTNumVal.setV("" + ((10+r)*c));   }  }  //telling the BarChart that it has axes and giving them Ids  cTBarChart.addNewAxId().setVal(123456);  cTBarChart.addNewAxId().setVal(123457);  //cat axis  CTCatAx cTCatAx = cTPlotArea.addNewCatAx();   cTCatAx.addNewAxId().setVal(123456); //id of the cat axis  CTScaling cTScaling = cTCatAx.addNewScaling();  cTScaling.addNewOrientation().setVal(STOrientation.MIN_MAX);  cTCatAx.addNewDelete().setVal(false);  cTCatAx.addNewAxPos().setVal(STAxPos.B);  cTCatAx.addNewCrossAx().setVal(123457); //id of the val axis  cTCatAx.addNewTickLblPos().setVal(STTickLblPos.NEXT_TO);  //val axis  CTValAx cTValAx = cTPlotArea.addNewValAx();   cTValAx.addNewAxId().setVal(123457); //id of the val axis  cTScaling = cTValAx.addNewScaling();  cTScaling.addNewOrientation().setVal(STOrientation.MIN_MAX);  cTValAx.addNewDelete().setVal(false);  cTValAx.addNewAxPos().setVal(STAxPos.L);  cTValAx.addNewCrossAx().setVal(123456); //id of the cat axis  cTValAx.addNewTickLblPos().setVal(STTickLblPos.NEXT_TO);  //legend  CTLegend cTLegend = cTChart.addNewLegend();  cTLegend.addNewLegendPos().setVal(STLegendPos.B);  cTLegend.addNewOverlay().setVal(false); } public static void main(String[] args) throws Exception {  CreatePPTXCharts createPPTXCharts = new CreatePPTXCharts(); }//________________________________________________________________________ //a class for providing a MyXSLFChartShape private class MyXSLFChartShape {  private CTGraphicalObjectFrame _graphicalObjectFrame;  private XSLFSlide slide;  private MyXSLFChart myXSLFChart;  MyXSLFChartShape(XSLFSlide slide, MyXSLFChart myXSLFChart) throws Exception {   String rId = "rId" + (slide.getRelationParts().size()+1);   slide.addRelation(rId, XSLFRelation.CHART, myXSLFChart);   long cNvPrId = 1;   String cNvPrName = "MyChart";   int cNvPrNameCount = 1;   for (CTGraphicalObjectFrame currGraphicalObjectFrame : slide.getXmlObject().getCSld().getSpTree().getGraphicFrameList()) {    if (currGraphicalObjectFrame.getNvGraphicFramePr() != null) {     if (currGraphicalObjectFrame.getNvGraphicFramePr().getCNvPr() != null) {      cNvPrId++;      if (currGraphicalObjectFrame.getNvGraphicFramePr().getCNvPr().getName().startsWith(cNvPrName)) {       cNvPrNameCount++;      }     }    }   }   CTGraphicalObjectFrame graphicalObjectFrame = slide.getXmlObject().getCSld().getSpTree().addNewGraphicFrame();   CTGraphicalObjectFrameNonVisual cTGraphicalObjectFrameNonVisual = graphicalObjectFrame.addNewNvGraphicFramePr();   cTGraphicalObjectFrameNonVisual.addNewCNvGraphicFramePr();   cTGraphicalObjectFrameNonVisual.addNewNvPr();   CTNonVisualDrawingProps cTNonVisualDrawingProps = cTGraphicalObjectFrameNonVisual.addNewCNvPr();   cTNonVisualDrawingProps.setId(cNvPrId);   cTNonVisualDrawingProps.setName("MyChart" + cNvPrNameCount);   CTGraphicalObject graphicalObject = graphicalObjectFrame.addNewGraphic();   CTGraphicalObjectData graphicalObjectData = CTGraphicalObjectData.Factory.parse(     "<c:chart xmlns:c=\"http://schemas.openxmlformats.org/drawingml/2006/chart\" "    +"xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" "    +"r:id=\"" + rId + "\"/>"   );   graphicalObjectData.setUri("http://schemas.openxmlformats.org/drawingml/2006/chart");   graphicalObject.setGraphicData(graphicalObjectData);   _graphicalObjectFrame = graphicalObjectFrame;   this.slide = slide;   this.myXSLFChart = myXSLFChart;   this.setAnchor(new Rectangle());  }  private void setAnchor(Rectangle2D anchor) {   CTTransform2D xfrm = (_graphicalObjectFrame.getXfrm() != null) ? _graphicalObjectFrame.getXfrm() : _graphicalObjectFrame.addNewXfrm();   CTPoint2D off = xfrm.isSetOff() ? xfrm.getOff() : xfrm.addNewOff();   long x = Units.toEMU(anchor.getX());   long y = Units.toEMU(anchor.getY());   off.setX(x);   off.setY(y);   CTPositiveSize2D ext = xfrm.isSetExt() ? xfrm.getExt() : xfrm.addNewExt();   long cx = Units.toEMU(anchor.getWidth());   long cy = Units.toEMU(anchor.getHeight());   ext.setCx(cx);   ext.setCy(cy);  }  private MyXSLFChart getMyXSLFChart() {   return myXSLFChart;  } } //a wrapper class for the ChartSpaceDocument /ppt/charts/chart*.xml in the *.pptx ZIP archive   private class MyXSLFChart extends POIXMLDocumentPart {  private CTChartSpace chartSpace;  private MyXSLFChart(PackagePart part) throws Exception {   super(part);   chartSpace = ChartSpaceDocument.Factory.newInstance().addNewChartSpace();  }  private CTChartSpace getChartSpace() {   return chartSpace;  }  @Override  protected void commit() throws IOException {   XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS);   xmlOptions.setSaveSyntheticDocumentElement(new QName(CTChartSpace.type.getName().getNamespaceURI(), "chartSpace", "c"));   PackagePart part = getPackagePart();   OutputStream out = part.getOutputStream();   chartSpace.save(out, xmlOptions);   out.close();  } }}

产生与XSSFWorkbook数据表相同但具有的代码。

import java.io.*;import org.apache.poi.*;import org.apache.poi.xslf.usermodel.*;import org.apache.poi.xssf.usermodel.*;import org.apache.poi.ss.usermodel.*;import org.apache.poi.ss.util.*;import org.apache.poi.util.*;import org.apache.poi.openxml4j.opc.*;import static org.apache.poi.POIXMLTypeLoader.DEFAULT_XML_OPTIONS;import org.apache.xmlbeans.*;import org.openxmlformats.schemas.drawingml.x2006.chart.*;import org.openxmlformats.schemas.drawingml.x2006.main.*;import org.openxmlformats.schemas.presentationml.x2006.main.*;import javax.xml.namespace.QName;import java.util.HashMap;import java.util.Map;import java.util.List;import java.util.regex.Pattern;import java.awt.geom.Rectangle2D;import java.awt.Rectangle;public class CreatePPTXChartsXSSFWb { public CreatePPTXChartsXSSFWb() throws Exception {  XMLSlideShow slideShow = new XMLSlideShow();  XSLFSlide slide = slideShow.createSlide();  MyXSLFChartShape myXSLFChartShape = createXSLFChart(slide);  myXSLFChartShape.setAnchor(new Rectangle(50,100,300,300));  drawPieChart(myXSLFChartShape);  myXSLFChartShape = createXSLFChart(slide);  myXSLFChartShape.setAnchor(new Rectangle(370,100,300,300));  drawBarChart(myXSLFChartShape);  FileOutputStream out = new FileOutputStream("CreatePPTXChartsXSSFWb.pptx");  slideShow.write(out);  out.close(); } //a method for creating the chart XML document /ppt/charts/chart*.xml in the *.pptx ZIP archive //and creating a MyXSLFChartShape as slide shape   public MyXSLFChartShape createXSLFChart(XSLFSlide slide) throws Exception {  OPCPackage oPCPackage = slide.getSlideShow().getPackage();  int chartCount = oPCPackage.getPartsByName(Pattern.compile("/ppt/charts/chart.*")).size() + 1;  PackagePartName partName = PackagingURIHelper.createPartName("/ppt/charts/chart" + chartCount + ".xml");  PackagePart part = oPCPackage.createPart(partName, "application/vnd.openxmlformats-officedocument.drawingml.chart+xml");  MyXSLFChart myXSLFChart = new MyXSLFChart(part);  MyXSLFChartShape myXSLFChartShape = new MyXSLFChartShape(slide, myXSLFChart);  return myXSLFChartShape; } public void drawPieChart(MyXSLFChartShape myXSLFChartShape) {  XSSFWorkbook workbook = myXSLFChartShape.getMyXSLFChart().getXSLFXSSFWorkbook().getXSSFWorkbook();  XSSFSheet sheet = workbook.getSheetAt(0);  sheet.createRow(0).createCell(0).setCellValue("Cat");  sheet.getRow(0).createCell(1).setCellValue("Val");  for (int r = 1; r < 4; r++) {   sheet.createRow(r).createCell(0).setCellValue("Cat" + r);   sheet.getRow(r).createCell(1).setCellValue(10*r);  }  CTChartSpace chartSpace = myXSLFChartShape.getMyXSLFChart().getChartSpace();  CTPieChart cTPieChart = chartSpace.addNewChart().addNewPlotArea().addNewPieChart();  cTPieChart.addNewVaryColors().setVal(true);  CTPieSer cTPieSer = cTPieChart.addNewSer();  cTPieSer.addNewIdx().setVal(0);  CTStrRef cTStrRef = cTPieSer.addNewTx().addNewStrRef();  cTStrRef.setF("Sheet0!$B$1");  cTStrRef.addNewStrCache().addNewPtCount().setVal(1);  CTStrVal cTStrVal = cTStrRef.getStrCache().addNewPt();  cTStrVal.setIdx(0);  cTStrVal.setV("Val");  cTStrRef = cTPieSer.addNewCat().addNewStrRef();  cTStrRef.setF("Sheet0!$A$2:$A$4");  cTStrRef.addNewStrCache().addNewPtCount().setVal(3);  for (int r = 1; r < 4; r++) {    cTStrVal = cTStrRef.getStrCache().addNewPt();   cTStrVal.setIdx(r-1);   cTStrVal.setV("Cat" + r);  }  CTNumRef cTNumRef = cTPieSer.addNewVal().addNewNumRef();  cTNumRef.setF("Sheet0!$B$2:$B$4");  cTNumRef.addNewNumCache().addNewPtCount().setVal(3);  for (int r = 1; r < 4; r++) {    CTNumVal cTNumVal = cTNumRef.getNumCache().addNewPt();   cTNumVal.setIdx(r-1);   cTNumVal.setV("" + (10*r));  } } public void drawBarChart(MyXSLFChartShape myXSLFChartShape) {  XSSFWorkbook workbook = myXSLFChartShape.getMyXSLFChart().getXSLFXSSFWorkbook().getXSSFWorkbook();  XSSFSheet sheet = workbook.getSheetAt(0);  sheet.createRow(0);  for (int c = 1; c < 4; c++) {    sheet.getRow(0).createCell(c).setCellValue("Cat" + c);  }  for (int r = 1; r < 5; r++) {   sheet.createRow(r).createCell(0).setCellValue("Val" + r);   for (int c = 1; c < 4; c++) {     sheet.getRow(r).createCell(c).setCellValue((10+r)*c);   }  }  CTChartSpace chartSpace = myXSLFChartShape.getMyXSLFChart().getChartSpace();  CTChart cTChart = chartSpace.addNewChart();  CTPlotArea cTPlotArea = cTChart.addNewPlotArea();  CTBarChart cTBarChart = cTPlotArea.addNewBarChart();  cTBarChart.addNewVaryColors().setVal(true);  cTBarChart.addNewBarDir().setVal(STBarDir.COL);  for (int r = 1; r < 5; r++) {   CTBarSer cTBarSer = cTBarChart.addNewSer();   CTStrRef cTStrRef = cTBarSer.addNewTx().addNewStrRef();   cTStrRef.setF("Sheet0!$A$" + (r+1));   cTStrRef.addNewStrCache().addNewPtCount().setVal(1);   CTStrVal cTStrVal = cTStrRef.getStrCache().addNewPt();   cTStrVal.setIdx(0);   cTStrVal.setV("Val" + r);   cTBarSer.addNewIdx().setVal(r-1);   CTAxDataSource cttAxDataSource = cTBarSer.addNewCat();   cTStrRef = cttAxDataSource.addNewStrRef();   cTStrRef.setF("Sheet0!$B$1:$D$1");      cTStrRef.addNewStrCache().addNewPtCount().setVal(3);   for (int c = 1; c < 4; c++) {     cTStrVal = cTStrRef.getStrCache().addNewPt();    cTStrVal.setIdx(c-1);    cTStrVal.setV("Cat" + c);   }   CTNumDataSource ctNumDataSource = cTBarSer.addNewVal();   CTNumRef cTNumRef = ctNumDataSource.addNewNumRef();   cTNumRef.setF("Sheet0!$B$" + (r+1) + ":$D$" + (r+1));   cTNumRef.addNewNumCache().addNewPtCount().setVal(3);   for (int c = 1; c < 4; c++) {     CTNumVal cTNumVal = cTNumRef.getNumCache().addNewPt();    cTNumVal.setIdx(c-1);    cTNumVal.setV("" + ((10+r)*c));   }  }  //telling the BarChart that it has axes and giving them Ids  cTBarChart.addNewAxId().setVal(123456);  cTBarChart.addNewAxId().setVal(123457);  //cat axis  CTCatAx cTCatAx = cTPlotArea.addNewCatAx();   cTCatAx.addNewAxId().setVal(123456); //id of the cat axis  CTScaling cTScaling = cTCatAx.addNewScaling();  cTScaling.addNewOrientation().setVal(STOrientation.MIN_MAX);  cTCatAx.addNewDelete().setVal(false);  cTCatAx.addNewAxPos().setVal(STAxPos.B);  cTCatAx.addNewCrossAx().setVal(123457); //id of the val axis  cTCatAx.addNewTickLblPos().setVal(STTickLblPos.NEXT_TO);  //val axis  CTValAx cTValAx = cTPlotArea.addNewValAx();   cTValAx.addNewAxId().setVal(123457); //id of the val axis  cTScaling = cTValAx.addNewScaling();  cTScaling.addNewOrientation().setVal(STOrientation.MIN_MAX);  cTValAx.addNewDelete().setVal(false);  cTValAx.addNewAxPos().setVal(STAxPos.L);  cTValAx.addNewCrossAx().setVal(123456); //id of the cat axis  cTValAx.addNewTickLblPos().setVal(STTickLblPos.NEXT_TO);  //legend  CTLegend cTLegend = cTChart.addNewLegend();  cTLegend.addNewLegendPos().setVal(STLegendPos.B);  cTLegend.addNewOverlay().setVal(false); } public static void main(String[] args) throws Exception {  CreatePPTXChartsXSSFWb createPPTXCharts = new CreatePPTXChartsXSSFWb(); } //a class for providing a MyXSLFChartShape private class MyXSLFChartShape {  private CTGraphicalObjectFrame _graphicalObjectFrame;  private XSLFSlide slide;  private MyXSLFChart myXSLFChart;  MyXSLFChartShape(XSLFSlide slide, MyXSLFChart myXSLFChart) throws Exception {   String rId = "rId" + (slide.getRelationParts().size()+1);   slide.addRelation(rId, XSLFRelation.CHART, myXSLFChart);   long cNvPrId = 1;   String cNvPrName = "MyChart";   int cNvPrNameCount = 1;   for (CTGraphicalObjectFrame currGraphicalObjectFrame : slide.getXmlObject().getCSld().getSpTree().getGraphicFrameList()) {    if (currGraphicalObjectFrame.getNvGraphicFramePr() != null) {     if (currGraphicalObjectFrame.getNvGraphicFramePr().getCNvPr() != null) {      cNvPrId++;      if (currGraphicalObjectFrame.getNvGraphicFramePr().getCNvPr().getName().startsWith(cNvPrName)) {       cNvPrNameCount++;      }     }    }   }   CTGraphicalObjectFrame graphicalObjectFrame = slide.getXmlObject().getCSld().getSpTree().addNewGraphicFrame();   CTGraphicalObjectFrameNonVisual cTGraphicalObjectFrameNonVisual = graphicalObjectFrame.addNewNvGraphicFramePr();   cTGraphicalObjectFrameNonVisual.addNewCNvGraphicFramePr();   cTGraphicalObjectFrameNonVisual.addNewNvPr();   CTNonVisualDrawingProps cTNonVisualDrawingProps = cTGraphicalObjectFrameNonVisual.addNewCNvPr();   cTNonVisualDrawingProps.setId(cNvPrId);   cTNonVisualDrawingProps.setName("MyChart" + cNvPrNameCount);   CTGraphicalObject graphicalObject = graphicalObjectFrame.addNewGraphic();   CTGraphicalObjectData graphicalObjectData = CTGraphicalObjectData.Factory.parse(     "<c:chart xmlns:c=\"http://schemas.openxmlformats.org/drawingml/2006/chart\" "    +"xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" "    +"r:id=\"" + rId + "\"/>"   );   graphicalObjectData.setUri("http://schemas.openxmlformats.org/drawingml/2006/chart");   graphicalObject.setGraphicData(graphicalObjectData);   _graphicalObjectFrame = graphicalObjectFrame;   this.slide = slide;   this.myXSLFChart = myXSLFChart;   this.setAnchor(new Rectangle());  }  private void setAnchor(Rectangle2D anchor) {   CTTransform2D xfrm = (_graphicalObjectFrame.getXfrm() != null) ? _graphicalObjectFrame.getXfrm() : _graphicalObjectFrame.addNewXfrm();   CTPoint2D off = xfrm.isSetOff() ? xfrm.getOff() : xfrm.addNewOff();   long x = Units.toEMU(anchor.getX());   long y = Units.toEMU(anchor.getY());   off.setX(x);   off.setY(y);   CTPositiveSize2D ext = xfrm.isSetExt() ? xfrm.getExt() : xfrm.addNewExt();   long cx = Units.toEMU(anchor.getWidth());   long cy = Units.toEMU(anchor.getHeight());   ext.setCx(cx);   ext.setCy(cy);  }  private MyXSLFChart getMyXSLFChart() {   return myXSLFChart;  } } //a wrapper class for the ChartSpaceDocument /ppt/charts/chart*.xml in the *.pptx ZIP archive   private class MyXSLFChart extends POIXMLDocumentPart {  private CTChartSpace chartSpace;  private MyXSLFXSSFWorkbook myXSLFXSSFWorkbook;  private MyXSLFChart(PackagePart part) throws Exception {   super(part);   OPCPackage oPCPackage = part.getPackage();   int chartCount = oPCPackage.getPartsByName(Pattern.compile("/ppt/embeddings/.*.xlsx")).size() + 1;   PackagePartName partName = PackagingURIHelper.createPartName("/ppt/embeddings/Microsoft_Excel_Worksheet" + chartCount + ".xlsx");   PackagePart xlsxpart = oPCPackage.createPart(partName, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");   myXSLFXSSFWorkbook = new MyXSLFXSSFWorkbook(xlsxpart);   String rId = "rId" + (this.getRelationParts().size()+1);   XSLFXSSFRelation xSLFXSSFRelationPACKAGE = new XSLFXSSFRelation(    "http://schemas.openxmlformats.org/officeDocument/2006/relationships/package");   this.addRelation(rId, xSLFXSSFRelationPACKAGE, myXSLFXSSFWorkbook);   chartSpace = ChartSpaceDocument.Factory.newInstance().addNewChartSpace();   CTExternalData cTExternalData = chartSpace.addNewExternalData();   cTExternalData.setId(rId);   //cTExternalData.addNewAutoUpdate().setVal(true);  }  private CTChartSpace getChartSpace() {   return chartSpace;  }  private MyXSLFXSSFWorkbook getXSLFXSSFWorkbook() {   return myXSLFXSSFWorkbook;  }  @Override  protected void commit() throws IOException {   XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS);   xmlOptions.setSaveSyntheticDocumentElement(new QName(CTChartSpace.type.getName().getNamespaceURI(), "chartSpace", "c"));   PackagePart part = getPackagePart();   OutputStream out = part.getOutputStream();   chartSpace.save(out, xmlOptions);   out.close();  } } //a wrapper class for the XSSFWorkbook /ppt/embeddings/Microsoft_Excel_Worksheet*.xlsx in the *.pptx ZIP archive   private class MyXSLFXSSFWorkbook extends POIXMLDocumentPart {  private XSSFWorkbook workbook;  private MyXSLFXSSFWorkbook(PackagePart part) throws Exception {   super(part);   workbook = new XSSFWorkbook();   XSSFSheet sheet = workbook.createSheet();  }  private XSSFWorkbook getXSSFWorkbook() {   return workbook;  }  @Override  protected void commit() throws IOException {   PackagePart part = getPackagePart();   OutputStream out = part.getOutputStream();   workbook.write(out);   workbook.close();   out.close();  } } //a class to note the relations private class XSLFXSSFRelation extends POIXMLRelation {  private XSLFXSSFRelation(String rel) {   super(null, rel, null);  } }}

Edit January 29 2019:

Above code was working using apache poi 3.16 up to apache poi 3.17. To
make it work using current apache poi 4.0.1 the only need is changing the
imports a little bit:

...import org.apache.poi.openxml4j.opc.*;//import static org.apache.poi.POIXMLTypeLoader.DEFAULT_XML_OPTIONS;import static org.apache.poi.ooxml.POIXMLTypeLoader.DEFAULT_XML_OPTIONS;import org.apache.poi.ooxml.*;import org.apache.xmlbeans.*;...

This is because the Office Open XML stuff now is in
org.apache.poi.ooxml.*and not more in org.apache.poi.*.

关于在PowerPoint中加入背景音乐让它自动环循播放的图文方法如何在ppt加入背景音乐循环播放的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于c# – 在powerpoint中的文本框中查找动画的开始/结束字符索引、C#添加:在PowerPoint中更改形状的选择、Java 给 PowerPoint 文档添加背景颜色和背景图片、Java使用APACHE POI在PowerPoint中创建图表等相关内容,可以在本站寻找。

本文标签: