Code covered by the BSD License  

Highlights from
exportToPPTX

4.81818

4.8 | 14 ratings Rate this file 100 Downloads (last 30 days) File Size: 118 KB File ID: #40277
image thumbnail

exportToPPTX

by

 

12 Feb 2013 (Updated )

MatLab tool for exporting data to PowerPoint 2007+ files without using COM-objects automation

Editor's Notes:

This file was selected as MATLAB Central Pick of the Week

| Watch this File

File Information
Description

exportToPPTX allows user to create PowerPoint 2007+ (PPTX) files without using COM-objects automation (or PowerPoint application itself). exportToPPTX writes PPTX files natively.

Note about PowerPoint 2003 and older: To open these PPTX files in older PowerPoint software you will need to get a free office compatibility pack from Microsoft: http://www.microsoft.com/en-us/download/details.aspx?id=3

Basic command syntax:

exportToPPTX('command',parameters,...)

List of available commands:
* new - start new file
* open - open (to append to) existing file
* addslide - add new slide
* addnote - add slide notation
* addpicture - add image (figure handle, CDATA, image filename) to current slide
* addtext - add textbox to current slide
* save - save file
* close - close (clear temporary file)
* query - get information about current status

Examples of all of these commands and various options are in the examples_exportToPPTX.m file.

Up-to-date version, a more detailed help, bugs/issues tracking can all be found here: https://github.com/stefslon/exportToPPTX

Required Products MATLAB
MATLAB release MATLAB 7.12 (R2011a)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (26)
15 Mar 2014 Stefan Slonevskiy

wei, you can use any format you want as long as PowerPoint supports it. It supports PNG, JPG, GIF, BMP, TIF and many others raster image formats. EMF format is an example of vector file formats. Another example would be EPS. Using vector format has an advantage of being able to zoom in as much as you want without losing details. However with complicated figures vector format very quickly becomes large in size. I included EMF in the examples_exportToPPTX script just to show that exportToPPTX supports vector formats.

24 Jan 2014 grega

Nice script, but Im keep on getting the error message:
Error using copyfile
The system cannot find the path specified.
-> 881 copyfile(imgData,imagePath);

I used: addPicture(PPTXInfo,'myPic.bmp',varargin)
Any solution pls?

02 Jan 2014 Jonathan  
20 Oct 2013 virginia

amazing!!! :D

12 Oct 2013 wei

Very nice work, However, saveas(...,emf) in examples_exportToPPTX could not properly work in MAC OS, Could you change this to another formate, such as jpeg or png.

11 Oct 2013 John D'Errico

What a useful tool!

11 Oct 2013 Jiro Doke

Very nice, Stefan!

A couple of requests.
1. I would like to be able to apply existing templates to the PPTX.
2. It would be nice to apply a standard layout, such as title slide, agenda slide, title and content, title and two contents, etc.
3. Related to #2, once I apply a standard layout, I would like to put in text to the standard text box, instead of adding a new text box.

03 Oct 2013 mylyu  
03 Oct 2013 mylyu

It works well with office 2013. Thanks.

29 Sep 2013 Stefan Slonevskiy

Lube F, I have just submitted an updated version that seems to work with Office 2010. I say "seems" because I was only able to test it with PowerPoint 2010 Viewer. I do not have an access to a full-blown Office 2010 at the moment. Please let me know if you still see the issue. Updated version should appear on here in a few days, or you can get it now from GitHub. Thanks!

18 Sep 2013 Lube F

aahhh what happened to my first comment?!!
what i said was:
fantastic submission, but i've run into the 2010 corruption bug you mention here:
https://github.com/stefslon/exportToPPTX/issues/8
and then i went off for a while to try to work out the problem, and the only thing i found to work was...

18 Sep 2013 Lube F

ok well a crappy workaround is to open with powerpoint 2007 viewer then use a pdf printer to create a pdf, and then use a pdf to pptx converter. it does the job but obviously it's not ideal!
perhaps you could also workaround with openoffice?
cheers.

13 May 2013 p kung

Hi, Stefan

i have found 2 problems:

1. if you create a new PPTX without specifying the dimensions, (PPTX default = 10" x 7.5")

then if you want to save (append) to the same PPT file the 2nd time, it throws an error @ about line 402:

about "createdDate" does not exist:

PPTXInfo = rmfield(PPTXInfo, ....)

it appears that createdDate is assigned only if the dimensions are explicitly given.

so right now, i always give dimensions.

2. the axis scale does not seem to stick.

it always appears to be auto-scale. so my workaround is always use "saveas" in a temporary png file then add it in PPT/

thanks

regards,

02 May 2013 p kung

thanks Stefan for such a speedy response

works beautifully, exactly what i need.

02 May 2013 Stefan Slonevskiy

Thanks, p kung. Latest version is up, it should now work with multiple images properly. Let me know if you see any other bugs.

30 Apr 2013 p kung

Jonathan is right,

i also can't create 4 different plots on the same figure. they're all identical.

in your example, you plot earth 4 times & put them in 2x2 plots on a slide.

now i want to plot 4 different plots/images & put them in 2x2 plots on one slide.

somehow, the 2x2 plots are of the same image (last plot) 4 times.

if you could kindly fix this bug, i'd give it 5 stars.

regards,

26 Mar 2013 Stefan Slonevskiy

In terms of capturing screen rather than figures, this is a known getframe limitation. See MathWorks' article on a potential workaround: http://www.mathworks.com/support/solutions/en/data/1-3NMHJ5/ You can use hardcopy method to get figure/axis CDATA and then just pass that to exportToPPTX. An example of passing CDATA to exportToPPTX is available in examples_exportToPPTX.m

26 Mar 2013 Stefan Slonevskiy

To save figures in another file format use MatLab's imwrite function to write to a temporary file and then call exportToPPTX with that filename. For example:
img = getframe(gcf);
imwrite(img.cdata,'temp.jpg');
exportToPPTX('addpicture','temp.jpg','Position',[6 3.5 3 2]);

In terms of plans for notes support, I was hoping to add it at some point.

26 Mar 2013 Matlab User

With MATLAB running in the background--and exportToPPTX being called from within a nested loop--I was using Firefox in the foreground. When the MATLAB simulation complete, I noticed screen shots of my web browsing session appearing in the PPTX files produced by exportToPPTX. Furthermore, it would also appear that if the PC is "locked" during a simulation, then the exportToPPTX pastes completely black figures into the PPTX file.

Apart from neither locking my PC nor using it for anything else during a simulation, is there an alternative way of ensuring that the figures are not corrupted?

26 Mar 2013 Matlab User

Thanks for this excellent function which provides massive speed improvements compared to the COM method.

When using the function within a loop, I found that I had to clear PPTXInfo to avoid an error that occurred the second time the function was called. On line 394, I replaced "PPTXInfo.fileOpen = false;" with "clear PPTXInfo".

A couple of questions:

Figures are pasted into the PPTX as PNG. Would it possible to paste using a different graphics format?

Do you have plans to allow slide notes to be added?

18 Mar 2013 John  
13 Mar 2013 Stefan Slonevskiy

Jonathan, I tested it with four images (in the examples_exportToPPTX.m script) and it worked fine. Can you please provide more details about this bug?

13 Mar 2013 Jonathan Sullivan

This is great.

However, I did encounter a bug. It seems as though you can only have unique image per slide. This is quite limiting. If you can fix this bug, I'd gladly change my rating to 5 stars

13 Mar 2013 Stefan Slonevskiy

Thanks for the suggestion, Darik. I have added this and a few other options to the latest version.

11 Mar 2013 Darik

Nice work. This is definitely a lot faster than the alternative COM implementations. I suppose the trade-off is that you can't export to a file if it's already open in Powerpoint.

I'd suggest you split the addpicture method up into 'addfigure' and 'addimage'. The latter could accept a png file as input instead of a figure handle, which would make your function a lot more compatible with all the other exporting functions on the FEX, such as export_fig.

11 Mar 2013 Darik  
Updates
13 Mar 2013

* Throw a more descriptive error if there is one when writing PPTX file
* Support additional input types for addPicture
* Add additional textbox and image formatting options

02 May 2013

Fixed bug that caused multiple images to override each other on a single slide.

12 Aug 2013

added ability to add notes to slides, plus fixed a number of bugs

17 Sep 2013

- Add "BackgroundColor" option to slides
- Fixed bug with Unicode file content
- Fixed invalid PPTX files on some versions of PowerPoint
- Fixed paragraph breaks in multi-line textboxes

30 Sep 2013

Fixed (hopefully) Office 2010 compatibility issue

Contact us