How to write a for loop to populate a powerpoint slide deck?

조회 수: 51 (최근 30일)
Hayden Garmon
Hayden Garmon 2020년 8월 13일
편집: Prabhanjan Mentla 2020년 8월 18일
import mlreportgen.ppt.*
slides = Presentation('Waveform Plotting');
add(slides,'Title Slide',1);
contents = find(slides,'Title');
replace(contents(1),'Waveform Plotting');
add(slides,'Title and Content');
plane = Picture(which('JPG1.jpg'));
plane.Width = '4600';
plane.Height = '2100';
replace(slides,'Content',plane);
add(slides,'Title and Content');
plane = Picture(which('JPG2.jpg'));
plane.Width = '4600';
plane.Height = '2100';
replace(slides,'Content',plane);
close(slides);
Hi All,
I am trying to read an entire directory and then create and fill a powerpoint with each slide containing one, full screen, jpg from the directory. My largest struggle is creating the powerpoint. Right now, the code seen above writes a power point with a title slide, but it duplicates the first slide into two slides, instead of using a different JPG for each subsequent slide.

채택된 답변

Prabhanjan Mentla
Prabhanjan Mentla 2020년 8월 17일
편집: Prabhanjan Mentla 2020년 8월 18일
Hi
You can do by iterating through all the files of images from a directory and adding them to the slides in the ppt using Picture function. For example, consider the below lines of code:
import mlreportgen.ppt.*
ppt = Presentation('myPresentation.pptx');
open(ppt);
files = dir('*.png');
for i=1:length(files)
pictureSlide = add(ppt,'Blank');
img = Picture(sprintf('image%d.png',i));
add(pictureSlide,img);
end
close(ppt);
The images in the directory are of image1.png,image2.png...etc.,
For more information refer the below link.
Hope this helps.
Update: Even if the images are of different names we may achieve the above task by replacing the
img = Picture(sprintf('image%d.png',i)); line with img = Picture(files(i).name).

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 MATLAB Report Generator에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by