2012-04-21 8 views
0

グラフ(棒グラフ)を持つExcelファイルが1つあります。私はまた、3スライドのPowerpointプレゼンテーションを持っています。 PowerpointスライドのExcelシートには、「タイトル」のチャートはありませんのでご注意ください。スライド#2のグラフをExcelファイルのグラフで更新する必要があります。PowerPointスライドをExcelグラフで更新する方法

私はこのフォーラムを検索しましたが、私が見つけたのは新しいスライドを作成して、タイトルを使ってチャートを更新する方法でした。

ご協力いただきますようお願い申し上げます。あなたの時間をありがとう

EDIT:あなたのソリューションは良いですが、特定のスライドのチャートを置き換える方法に私を助けません。私の質問では、3つのスライドがあると述べました。スライド2のチャートを特に更新したいと思います。チャートのタイトルがないので、スライド番号に基づいて置き換えるチャートを探す必要があります。これはどうですか?再度、感謝します。これは、以下の手順を実行して行うことができます

答えて

1

:(注意:PowerPointが対象で、Excelがソースである)

  1. は、ターゲットを開き、置き換えたいChartPartを探します。 ChartPartがある親SlidePartへの参照を保持し、ChartPartのRelationshipIdをSlidePartにコピーしてから、ChartPartをターゲットから削除します。
  2. ソースを保存し、ファイルを開いたままにします。

     foreach (var slidePart in targetPPT.PresentationPart.SlideParts) 
         { 
          if (slidePart.ChartParts.Any()) 
          { 
           slidePartBookMark = slidePart; 
    
           var chartPart = slidePart.ChartParts.First(); 
           chartPartIdBookMark = slidePart.GetIdOfPart(chartPart); 
           slidePart.DeletePart(chartPart); 
           slidePart.Slide.Save(); 
           return; 
          } 
         } 
    
  3. ソースを開き、ターゲットにコピーするChartPartを見つけます。これは、ソースのどこかのWorksheetPartのDrawingsPartにあります。 ChartPartへの参照を保持し、ファイルを開いたままにします。ステップ1からSlidePartの参照で

     foreach (var worksheetPart in sourceXls.WorkbookPart.WorksheetParts) 
         { 
          if (worksheetPart.DrawingsPart != null) 
           if (worksheetPart.DrawingsPart.ChartParts.Any()) 
           { 
            saveXlsChart = worksheetPart.DrawingsPart.ChartParts.First(); 
            return; 
           } 
    
         } 
    
  4. 、AddNewPartコールで新しいChartPartを作成RelationshipId

    var newChartPart = slidePartBookMark.AddNewPart<ChartPart>(chartPartIdBookMark); 
    
  5. を使用してコピー元のチャートの内容手順で作成した新しいchartpartへFeedData/GetStreamのアイデアがhereであることを確認します。スライドを保存し、ファイルを閉じます。

    newChartPart.FeedData(saveXlsChart.GetStream()); 
        slidePartBookMark.Slide.Save(); 
        sourceXls.Close(); 
        targetPPT.Close(); 
    

私はそれが唯一のチャートそれぞれに含まれているシンプルなソース/ターゲットで動作するように取得することができました。あなたのファイルがより複雑な場合、ロケートロジックはFirst()以上になります。

これが役に立ちます。

+0

時間をいただきありがとうございます。私はこの解決策を試み、あなたに戻ってくる –

+0

私はあなたの解決策を見ました。私が正確に必要とするのは、特定のスライドに行くことができることです。私の質問では、スライド2のチャートを置き換えたいと述べました。これがどのように行われたかを知ることは役に立ちます –

+0

プレゼンテーションにチャートが1つしかない場合は、上記が機能します。 2番目のスライドだけが必要な場合は、手順2の下のコードの最初の行で、var secondSlidePart = targetPPT.PresentationPart.SlideParts.Skip(1).Take(1)を実行します。また、その下のif文も削除してください。 – Taterhead

関連する問題