本文将介绍在PowerPoint中加入背景音乐让它自动环循播放的图文方法的详细情况,特别是关于如何在ppt加入背景音乐循环播放的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个
本文将介绍在PowerPoint中加入背景音乐让它自动环循播放的图文方法的详细情况,特别是关于如何在ppt加入背景音乐循环播放的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于c# – 在powerpoint中的文本框中查找动画的开始/结束字符索引、C#添加:在PowerPoint中更改形状的选择、Java 给 PowerPoint 文档添加背景颜色和背景图片、Java使用APACHE POI在PowerPoint中创建图表的知识。
本文目录一览:- 在PowerPoint中加入背景音乐让它自动环循播放的图文方法(如何在ppt加入背景音乐循环播放)
- c# – 在powerpoint中的文本框中查找动画的开始/结束字符索引
- C#添加:在PowerPoint中更改形状的选择
- Java 给 PowerPoint 文档添加背景颜色和背景图片
- Java使用APACHE POI在PowerPoint中创建图表
在PowerPoint中加入背景音乐让它自动环循播放的图文方法(如何在ppt加入背景音乐循环播放)
随着PPT幻灯片一页一页的翻滚,再配上一段美妙的音乐,这样一来就可以让我们在演示或演讲时更容易吸引听众,讲课时听众也不会觉得枯燥乏味。那么我们如何才能在PowerPoint中插入背景音乐呢?
随着PPT幻灯片一页一页的翻滚,再配上一段美妙的音乐,这样一来就可以让我们在演示或演讲时更容易吸引听众,讲课时听众也不会觉得枯燥乏味。那么我们如何才能在PowerPoint中插入背景音乐呢?就算插入了音乐我们又该如何让它自动循环播放呢?今日Word联盟就来带领大家一起学习如何在Powerpoint中加入背景音乐,还有各种添加音乐时的需求与设置!
PPT中加入背景音乐技巧
①首先,选择PPT第一个页面,然后单击菜单栏的“插入”中的“影片和声音”,在弹出的菜单中再选择“文件中的声音”;(如下图)
②此时,会弹出“插入声音”的窗口,我们在里面找音乐文件的路径(至于音乐文件,大家可以在网上去下载各种歌曲或音乐,都可以插入PPT中),选择后单击确定;(如下图)
③单击确定后你会发现在PowerPoint中出现了个“小喇叭”,而且出现了个对话框,上面有两个选项,“自动”和“在单击时”,顾名思义“自动”意思是在演示幻灯片时音乐会自动播放,“在单击时”意思是在演示时单击鼠标左键音乐文件才开始自动播放,这里看个人需求来设置。
PPT单击鼠标左键音乐会停止怎么办?
这里有个常见问题要提醒大家,一般的情况下我们都会选择“自动”,但是在自动播放幻灯片时单击左键,你会发现音乐停止了,这跟没加入音乐有什么区别呢?别急,下面再来教大家解决这个问题。
①右键单击“小喇叭”在弹出的下拉列表中选择“自定义动画”,在右边弹出的“自定义动画”中我们单击音乐旁边的“小三角”按钮,然后在弹出的菜单中选择“效果选项”;(如下图)
②在弹出的“播放 声音”选项卡中,我们将“停止播放”下面的“在 张幻灯片后”,这里面设置数值大点,如下图红色区域,可以跟我一样设置成“999”然后确定,这时无论你怎样单击左键或者空格,音乐都不会停止了,除非播放完毕音乐才会停止。
PPT中设置“循环播放音乐”和“隐藏小喇叭图标”方法
右键单击“小喇叭”图标,然后选择“编辑声音对象”,进入“声音选项”后我们将“循环播放,直到停止”、“幻灯片放映时隐藏声音图标”前面的钩钩上,确定即可。
此后,在播放幻灯片时,小喇叭图标会自动隐藏;而且当音乐播放完毕后,会再次重新循环播放!
好了,此篇PowerPoint中加入背景音乐就讲到这里,在PowerPoint中设置音乐方面的小问题特别多,Word联盟随后会推出更多与此相关技巧希望大家多加关注!
总结
以上是小编为你收集整理的在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只是一个帮助类.它具有效果,形状,形状的起始位置和结束位置.这最终需要重构.这只是我如何获取这些信息的一个例子,所以有人可能会指出我做错了什么.
有没有其他方法可以找到动画片在字符串中的位置?
谢谢!!!
解决方法
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 文档添加背景颜色和背景图片
在制作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中创建图表
我们如何使用apache poi在Java中的ppt中创建图表。我们使用哪种POI API。下面是我用来创建文本框的代码
XSLFSlide slide = pptx.createSlide();XSLFTextShape textShape = slide.createTextBox();textShape.setText(data);
幻灯片对象不包含任何用于创建图表的api。
有什么解决办法吗?
提前致谢
答案1
小编典典到现在为止,XSLFChartShape
PowerPoint幻灯片中还没有可用的东西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 theimport
s 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 inorg.apache.poi.ooxml.*
and not more in org.apache.poi.*
.
关于在PowerPoint中加入背景音乐让它自动环循播放的图文方法和如何在ppt加入背景音乐循环播放的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于c# – 在powerpoint中的文本框中查找动画的开始/结束字符索引、C#添加:在PowerPoint中更改形状的选择、Java 给 PowerPoint 文档添加背景颜色和背景图片、Java使用APACHE POI在PowerPoint中创建图表等相关内容,可以在本站寻找。
本文标签: