1

親愛なるみんな、

私は Apache POI を使用しており、コードからいくつかのチャートを含むスライドを複製したいと考えています。

以下のコード ( https://poi.apache.org/slideshow/xslf-cookbook.html#Mergeに触発された) は、スライドにグラフがない場合に正常に動作します。

残念ながら、この方法ではグラフが複製されないようです。結果のファイルを開こうとすると、Powerpoint が問題を検出し、修復を試みますが失敗し、空のスライドが表示されます。

基礎となる XML ファイルを (Open XML SDK を使用して) 確認したところ、グラフ自体 (フォルダー内/ppt/charts) が複製されておらず、関係ファイル (フォルダー内/ppt/slides/_rels) が完全に更新されていないようです。

これが私の現在のコードです:

// Open slideshow
FileInputStream fileInputStream = new FileInputStream(sourceFilePath);
XMLSlideShow slideShow = new XMLSlideShow(fileInputStream);
fileInputStream.close();

// Duplicate slide
XSLFSlideLayout layout = slide.getSlideLayout();
XSLFSlide newSlide = slideshow.createSlide(layout);
newSlide.importContent(slide);

// Save updated slideshow
FileOutputStream fileOutputStream = new FileOutputStream(outputFilePath);
slideShow.write(fileOutputStream);
fileOutputStream.close();

スライドとそのチャートを複製する方法を知っていますか?

どうもありがとう、そしてよろしく!

4

2 に答える 2

2

できません。私は試してみましたが、問題は複製が画像やチャートを処理しないことです。

スクリプトを使用して手動でファイルをコピーする必要がありました。手順は次のとおりです。

  • スライド ファイルを見つける
  • 複製する
  • XML ファイルでチャート オブジェクトを見つけ、リレーション IDをメモします。
  • リレーションファイルで、リレーションIDで指定されたファイルを確認
  • このファイルを複製します
  • また、新しいスライドの関係ファイルを複製し、名前を更新する必要があります
  • 新しいスライドが表示されません。presentaion.xml を更新する必要があります
  • 注意: PPTX を Microsoft Powerpoint で動作させたい場合は、関連する Excel ワークブックも複製する必要があります (チャートの関連ファイルを参照)。
于 2016-12-02T16:31:35.543 に答える