我的PPT包含格式为{VALUES}
的值。我想使用Java将包含{SAMPLE}
的文件的文本替换为SARAN
等等。之前我尝试使用Apache poi而我没有解决方案,但我发现在Docx4j中有一个方法variableReplace()
将替换文本。我尝试了一个样本,但我没有看到任何文本被替换。
我的代码:
public static void main(String[] args) throws IOException, Docx4JException, Pptx4jException, JAXBException
{
String inputfilepath = "C:\\Work\\SampleTemplate.pptx";
PresentationMLPackage pptPackage
= PresentationMLPackage.load(new File(inputfilepath));
ThemePart themeSlidePart = (ThemePart)
pptPackage.getParts().getParts().get(new PartName("/ppt/theme/theme1.xml"));
Theme themeOfSlides = (Theme)themeSlidePart.getJaxbElement();
SlidePart slide = pptPackage.getMainPresentationPart().getSlide(0);
HashMap h = new HashMap<String, String>();
h.put("SlideTitleName", "SARANYA");
slide.variableReplace(h);
String outputfilepath = "C:\\Work\\24Jan2018_CheckOut\\dhl\\PPT-TRAILS\\SampleTemplate.pptx";
PresentationMLPackage pptPackagetoApply
= PresentationMLPackage.load(new File(outputfilepath));
ThemePart themeSlidePartToApply
= (ThemePart) pptPackagetoApply.getParts().getParts()
.get(new PartName("/ppt/theme/theme1.xml"));
themeSlidePartToApply.setJaxbElement(themeOfSlides);
SaveToZipFile saver = new SaveToZipFile(pptPackagetoApply);
saver.save(outputfilepath);
}
但是文字仍未被替换。我尝试了一个只有文字&#34; $ {SlideTitleName}&#34;的新PPTX文件。在里面。但它还没有奏效。
我想使用for循环向我的pptx模板添加许多行,我尝试了下面的内容,
if(majorAchievements.size()>0){
System.out.println("majorAchievements Size in Servlet is : "+majorAchievements.size() + " and value of get(0) is : "+ majorAchievements.get(0) );
for(int i=0;i<majorAchievements.size();i++){
achievements=(String) majorAchievements.get(i);
}
}
mappings.put("MajorAchievementText", achievements);
在我的ppt文件中,
我添加了两行,使用相同的$ {MajorAchievementText}。
上面的列表提取了2行。但在ppt里面它不是替代品。 请帮我如何通过迭代替换文本。
关心, Saranya C