View License

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video

Highlights from
xlwrite : Export Data to Excel from Matlab on Mac/Win

3.2 | 4 ratings Rate this file 134 Downloads (last 30 days) File Size: 665 KB File ID: #37560 Version: 1.2
image thumbnail

xlwrite : Export Data to Excel from Matlab on Mac/Win



19 Jul 2012 (Updated )

xlwrite allows you to export data (2d/3d arrays of double/cell) to Excel from Matlab (Mac/Win)

| Watch this File

File Information

The function xlwrite has similar syntax and inputs as MatLAB's xlswrite.
It also can write 3-d arrays (xlswrite can't), of cell and double type. To simplify the idea : we forward Matlab data to be exported to a Java function which in turn writes the data to excel.

Note that data to be exported is converted to cell then to java String array.

This workaround is a real working solution, it may need further refinements :
- manage Java heap space, as Java heap memory saturates for large arrays exported many times.
- format dates and strings, as all numbers appear as text in Excel.

Matlab's decimal separator is '.' : in order to be able to work with exported data, users of this solution will have to change Mac preferences regarding the decimal separator (should be ".").
To do so you need to go to System Preferences > International > Formats and click on Customize button in number zone, then type '.' in the field required.
This solution works under Windows.

Test_xlwrite.m contains an example.


This file inspired Xlwrite: Generate Xls(X) Files Without Excel On Mac/Linux/Win, Csvexport(Filename,Cell Vals), and Csvimport(Filename).

MATLAB release MATLAB 7.10 (R2010a)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (17)
27 Feb 2017 Scott Peer

If you are not already using Java with MATLAB, don't waste your time, there are no instructions on how to get this to run.

03 Dec 2016 Juan

Juan (view profile)

when i run it and then try to open the xlsx file both under Office 2011 or Office 365 for Mac it tells me that the file is corrupted or invalid. Any suggestions? thanks

Comment only
04 Oct 2016 Linghao Zhang

10 May 2016 Zhigang Xu

Zhigang Xu (view profile)

Thanks for having this utility for us! It may solve my need: I am writing an Matlab function which uses xlswrite under window OS. The intended user of this function however will be in Mac and Linux OS. I tried your test_xlwrite.m in my window machine and it works. However when I opened the resultant excel file, mat1_excel.xls, I got warning messages for all each of the cells, saying that the numbers are stored as text. I have to manually convert text to number cell by cell. Do you have a better solution to this problem?


Comment only
11 Sep 2015 Miguel Suastegui

How do I add the POI jar files to the Matlab Java path?

I keep getting this error:
Error using xlwrite (line 93)
The POI library is not loaded in Matlab.
Check that POI jar files are in Matlab Java path!

I'm running MATLAB R2015a on a MacBook air


Comment only
30 Jul 2015 Keith Johnson

For the people asking about the "WriteXL" error.

In my copy, the indentation was off. I just went to line 107 in the "xlwrite.m" file and corrected it. Hope that works for you as well.

16 Jul 2015 James Russell

The link posted below by Marin Deresco:
will lead you to another version of the same program. This is confusing - there are overlapping programs with overlapping updates. However, the link leads to the latest, and the latest works.

Another confusing thing is managing the Java libraries, which is unexplained. Practically, I have put the poi-library in an area where I keep matlab programs, moved the javaaddpath statements to my startup, which executes from there, and removed them from the test case. The Java paths are relative to wherever javaaddpath is executed (not explained).

It turns out that javaaddpath is inefficient, intended for development only. Instructions on putting a library on your static Java path are in Matlab documentation at Bringing Java Classes into MATLAB Workspace, Static Path. I have not been able to make these work. I have tried various forms of the path, relative and absolute. The instructions seems to be Windows-oriented. If anyone figures out how to make the instructions for static path work, an explanation would be appreciated. Meanwhile the dynamic path does work.

Comment only
27 May 2015 Jolene Atia

I tried this function with Matlab 2015a but it seems to have problems running, any updates? I get Error in xlwrite (line 146)
xlsWorkbook=HSSFWorkbook( );

Comment only
08 Feb 2015 Guillaume Felter

Like Joachim Seel, but I got a similar error while using xlwrite :
Undefined function 'WriteXL' for input arguments of type 'java.lang.String'.

Error in xlwrite (line 108)
In the folder Archive, there is
Cell2JavaString.m xlwrite.m
MXL.jar cell2char.m
Test_xlwrite.m jxl.jar,
but no WriteXL.m :(
How can I fix this ? I'm a beginner using additional tools like this.

Comment only
29 Oct 2014 samar

samar (view profile)

Hi, could I write on specific cells with xlwrite?
If the answer is yes please tell me how!

Comment only
24 Feb 2014 Joachim Seel

Hi, I have downloaded the xlwrite file but run into this error when trying to run the script below: Any suggestions how to correct this error? Thanks!

Undefined function 'WriteXL' for input arguments of type 'java.lang.String'.

Error in xlwrite (line 68)

This is the script.

%define variables

% read in dynamic load

%pre-allocate for speed

% loop through each row of dynamic_load_matrix and append to
% dynamic_load_vector
for i=1:365









Comment only
28 Jul 2013 Edward Byers

Complicated to get started with the java files etc and no very good instructions on this. See the example however.
Doesn't support specifying to a range.
However - support multi-dimensional variables which is a great bonus.

17 Oct 2012 Marin Deresco

@ the cyclist:
check the following submission:

Comment only
20 Aug 2012 Marin Deresco

@ Paul Shoemaker :
Will try to test a quick solution for xlsread soon (1-2 months).


Comment only
06 Aug 2012 Paul Shoemaker

Very neat! Any chance we might see an xlread variant that is similarly cross-platform?

Comment only
03 Aug 2012 Marin Deresco

@ the cyclist :
Hope xlwrite will help you. Thank you for the remark about the specific cells export. I didn't focus on this point yet. The idea behind xlwrite was to export Matlab 3d arrays of doubles or cells to excel.
If time permits, my next submission will contain currently missing xlswrite features.

Comment only
02 Aug 2012 the cyclist

This is an exciting submission, as it is an ongoing frustration that xlswrite doesn't function fully on a Mac.

xlwrite doesn't seem to have the ability to write to specific cells on a worksheet, as xlswrite does. Is that something you are planning to add, or is there some fundamental impediment to doing that? It would be a powerful addition.

Comment only
24 Jul 2012 1.1

updated the summary

03 Aug 2012 1.2

According to a user remark, I've updated the description of xlwrite : I've replaced 'same syntax' into 'similar syntax'.

Contact us