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:
List of available commands:
* new - start new file
* open - open (to append to) existing file or template
* 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
* addshape - add line or patch to the current slide
* addtable - add table to the current slide
* save - save file
* close - close (clear temporary file)
* query - get information about current status
More elaborate examples are included in examples_exportToPPTX.m and examples2_exportToPPTX.m files.
- Text can be made click-able with 'OnClick' parameter, however currently it only links to other slides (no hyperlinks)
- Tables can be controlled with the same set of parameters as textboxes, so you can use 'Position' parameter to specify the placement of the table. Position needs to be provided as a four element vector: x, y, width, height (in inches).
Excellent script! However, I have two questions:
* Is there to include hyperlinks in the text strings added to the Powerpoint?
* Is there any command to compress/minimize the sizes of the heights in a table? Currently it seems that all sides in the table are equally long
I'm seeing an error when using 'exportToPPTX('addnote',...'. PPTX file is created, but PPT gives 'Microsoft PowerPoint has stopped working' error.
Occurs with examples2_exportToPPTX.m & disappears when I comment out the 'addnote' calls. Win 7 64 bit, Matlab R2015b, Office 2013.
I am trying to copy double type values with a negative sign in front eg(-2.456e-6) converted to string (case1) and also in the form of tables(case2) into a ppt in the form of textbox or tables. The data with negative sign becomes a bullet when it appears in the .ppt file . Please help with the solution for the above issue.!
Thank you so much in advance!
Having issues with eps and pdf files importing into ppt with this tool. Jpg's work fine but when adding a figure via filename that was saved as an eps the subsequent powerpoint says the image is corrupted (it's not). With pdf's it says it can't determine the file format. Can you add support for all the methods that matlab's saveas supports?
I'm having some trouble producing a slide using 'addtext' where the text is a negative number. Is there a way to start a line using addtext with a minus sign and not have ExportToPPTX automatically trigger it as a bullet point?
Hi Stefan, I suppose to pass in a handle. To be sure, here is my procedure: I have written a script that opens the desired figure, saves it as a vector file (.emf) and then it calls exportToPPTX function.
Hi Stefan! Thank you for the fantastic tool! I'm using it for 3 months and it is very useful. Unfortunately, in recent days I have encountered some problems (I don't know the origin, they're probably linked to Windows updates).
Solitally I save a fullscreen picture, and then I launch the function. But actually on the PPT slide I see only a part of the figure (more or less one fourth of the complete figure).
Could you help me?
Thank you in advance
P.S.: I work with Windows 7 Professional SP1, Matlab2014b and PowerPoint2013
Really very very nice. However the default size appears to be 10x8 and not 10x7.5 and it is impossible to create any other size. It looks like the ('new',[11.7 8.27]) is ignored (MATLAB 2014b, MS Office 2013)
Stefan. Fantastic application!! It has saved me a great deal of effort in making changes to my COM application. I had to update when it went from 2007 to 2010 and now I am faced once again with updating. You have saved me that work.
I noticed that if I create a power point, save and close it, then re-open I have problems adding a picture or notes if the original power point didn't have pictures or notes in it.
I think the problem is related to creating directories.
HI Stefan. This is great. Thank you
I do have one problem thou. I can load an existing pptx. But how do I change to an current slide and add new text/etc to it. Currently you only seem to add anew slide onto the end and them add new text etc to that one. Thank you
This is a very nice script and I have been using it a lot and building more complex code around it. thanks for your work.
I do have some questions:
Is there a way to select custom themes? My company has its own theme it uses for presentations. Thanks
Norman, font type is currently not supported. I will add it when I get some free time. exportToPPTX does not handle templates at this time, so you can't select slide layout. I am slowly working on adding a this feature though.
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.
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.
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!
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:
and then i went off for a while to try to work out the problem, and the only thing i found to work was...
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?
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
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);
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.
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?
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?
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.