2012-04-21 4 views
0

У меня есть один файл Excel, в котором есть диаграмма (диаграмма). У меня также есть презентация Powerpoint с 3 слайдами. Обратите внимание, что диаграммы «Название» нет на листе Excel на слайдах Powerpoint. Мне нужно обновить диаграмму в слайде # 2 с помощью диаграммы в файле excel.Как обновить слайд PowerPoint с помощью диаграммы Excel

Обратите внимание, что я искал этот форум, и я нашел способы создания нового слайда, а также обновление диаграммы с использованием титта.

Любая помощь будет принята с благодарностью. Спасибо за ваше время

EDIT: Ваше решение хорошее, но не помогает мне в том, как заменить диаграмму на конкретном слайде. В моем вопросе я сказал, что есть 3 слайда. Я хочу конкретно обновить диаграмму в слайде 2. Нет названия диаграммы, поэтому мне нужно будет найти Диаграмму для замены на основе номера слайда. Как это делается? Еще раз спасибо.

ответ

1

Это можно сделать, выполнив следующие действия: (Примечание: PowerPoint является мишенью, и первенствовать является источником)

  1. Открыть цель и найти ChartPart вы хотите заменить. Содержите ссылку на родительский слайд-план, где находится ChartPart, и скопируйте RelationshipId ChartPart в 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, который вы хотите скопировать на цель. Это будет в DrawingsPart листа Worksheet где-то в вашем источнике. Сохраните ссылку на ChartPart и оставьте файл открытым.

     foreach (var worksheetPart in sourceXls.WorkbookPart.WorksheetParts) 
         { 
          if (worksheetPart.DrawingsPart != null) 
           if (worksheetPart.DrawingsPart.ChartParts.Any()) 
           { 
            saveXlsChart = worksheetPart.DrawingsPart.ChartParts.First(); 
            return; 
           } 
    
         } 
    
  4. В ссылке SlidePart из шага 1, создайте новый ChartPart с вызовом AddNewPart использования RelationshipId

    var newChartPart = slidePartBookMark.AddNewPart<ChartPart>(chartPartIdBookMark); 
    
  5. Скопируйте содержимое исходного графика в новом chartpart вы создали на шаге 4 с найденной идеей FeedData/GetStream here. Сохраните слайд и закройте файлы.

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

Я был в состоянии заставить его работать с простой источник/цель, которая содержится только одну диаграмму каждый. Если ваши файлы более сложны, ваша логика местоположения будет больше, чем First().

Надеюсь, это поможет.

+0

Спасибо, что нашли время. Я попробую это решение и вернусь к вам –

+0

Я посмотрел на ваше решение. То, что мне нужно, - это возможность перейти к определенному слайду. В моем вопросе я заявил, что хочу заменить диаграмму в слайде 2. Будет полезно знать, как это делается –

+0

Если в презентации есть только одна диаграмма, то выше будет работать. Если вам нужен только второй слайд, в первой строке кода ниже шага 2 попробуйте var secondSlidePart = targetPPT.PresentationPart.SlideParts.Skip (1) .Take (1). Также удалите приведенный ниже оператор if. – Taterhead