簡體   English   中英

如何使用Apache POI從Powerpoint中的幻燈片圖中替換DataXML

[英]How to replace DataXML from Slide Diagram in Powerpoint using Apache POI

我想使用apache API將Java中Powerpoint演示文稿的一個data.xml文件替換為其他文件data.xml

作為參考,我想用另一個PowerPoint文件替換以下文件。

在此處輸入圖片說明

以下是我嘗試過的代碼,但xml不能替換 使用此代碼替換后,每次運行時,兩個文件的XML都不同

public static void main(String[] args) {
    // TODO Auto-generated method stub
    final String filename = "C:/Users/skhan/Desktop/game.pptx";
    final String filename1 = "C:/Users/skhan/Desktop/globe.pptx";

    try {


        XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(filename));
        OPCPackage pkg = ppt.getPackage();
        PackagePart data = pkg.getPart(
               PackagingURIHelper.createPartName("/ppt/diagrams/data1.xml"));
        InputStream data1Inp = data.getInputStream();

        XMLSlideShow ppt1 = new XMLSlideShow(new FileInputStream(filename1));
        OPCPackage pkg1 = ppt1.getPackage();
        PackagePart data11 = pkg1.getPart(
               PackagingURIHelper.createPartName("/ppt/diagrams/data1.xml"));
        InputStream data1Inp1 = data11.getInputStream();

        String data1String = GetData(data1Inp);
        String data2String = GetData(data1Inp1);



//i want to replace here
        PrintStream pr = new PrintStream(data.getOutputStream());
        pr.print(data2String);
        pr.close();


        System.out.println("Completed");


    } catch (Exception e) {

        e.printStackTrace();
    }

}


public static String GetData(InputStream input) throws Exception
{
    StringBuilder builder = new StringBuilder();
    int ch;
    while((ch = input.read()) != -1){
        builder.append((char)ch);
    }

    String theString = builder.toString();
    return theString;
}

為了保存文件,我在更改后添加了幾行。 更改或添加后,XMLSlideShow必須寫入某些文件。

        File file =new File(filename);
        FileOutputStream out = new FileOutputStream(file);
        ppt.write(out);
        out.close();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM