View License

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

» Watch video

Highlights from

5.0 | 12 ratings Rate this file 48 Downloads (last 30 days) File Size: 6.36 KB File ID: #28600 Version:



Brett Shoelson (view profile)


31 Aug 2010 (Updated )

Append data to the next-available row of an existing Excel file with a single call to ActiveX.

| Watch this File

File Information

SYNTAX: [success,message] = xlsappend(file,data,sheet)
XLSAPPEND Stores numeric array or cell array to the end of specified Excel sheet.

REQUIRES ONLY ONE CALL TO THE EXCEL ACTXSERVER, so the overhead is less than for successive xlsread/xlswrite calls.

[SUCCESS,MESSAGE]=XLSAPPEND(FILE,ARRAY,SHEET) writes ARRAY to the Excel workbook, FILE, into the area beginning at COLUMN A and FIRST UNUSED ROW, in the worksheet specified in SHEET. FILE and ARRAY must be specified. If either FILE or ARRAY is empty, an error is thrown and XLSAPPEND terminates. The first worksheet of the workbook is the default. If SHEET does not exist, a new sheet is added at the end of the worksheet collection. If SHEET is an index larger than the number of worksheets, new sheets are appended until the number of worksheets in the workbook equals SHEET. The success of the operation is returned in SUCCESS and any accompanying message, in MESSAGE. On error, MESSAGE shall be a struct, containing the error message and message ID.

MATLAB release MATLAB 7.10 (R2010a)
Other requirements Windows (or other ActiveX-enabled) platform.
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (16)
31 Oct 2016 Jibran Shahid

great work ...

22 Jul 2016 Baris

Baris (view profile)

22 Apr 2016 Mohammad Taheri

Working great, thank you

14 Aug 2015 Abdulaziz Abutunis

TOO much time was saved. Thank you.

10 Jun 2015 Roman

Roman (view profile)


28 Jan 2015 Aditya

Aditya (view profile)

06 Feb 2014 Andy S

Andy S (view profile)

The property usedrange is the problem. I suppose you would have to use the method of selecting the bottom cell (eg. A64000) and do xlup to find the next row that doesn't contain data.

If you format the entire column by selecting the header, then there is no problem since usedrange doesn't count that as being using since the entire worksheet has formatting.

Comment only
06 Feb 2014 Andy S

Andy S (view profile)

Hey man, I'm trying to figure out how to get it to ignore formatting to determine the next row to append data to. I've pre-formatted a spreadsheet and it adds it to the next row below all of that. I could reformatt the sheet by copy/paste format everytime I import data but that's kind of a pain. Any help?

18 Nov 2013 Brett Shoelson

Brett Shoelson (view profile)

Thanks for sharing the rating, and for your modification suggestion, Ralph. Much appreciated!

Comment only
15 Nov 2013 Ralph

Ralph (view profile)

Very useful function. Thank you.

I added the following prior to line 160 to create file if it does not already exist (motivated by xlswrite1):

if ~exist(file,'file')
ExcelWorkbook = Excel.workbooks.Add;
switch ext
case '.xls' %xlExcel8 or xlWorkbookNormal
xlFormat = -4143;
case '.xlsb' %xlExcel12
xlFormat = 50;
case '.xlsx' %xlOpenXMLWorkbook
xlFormat = 51;
case '.xlsm' %xlOpenXMLWorkbookMacroEnabled
xlFormat = 52;
xlFormat = -4143;

Comment only
15 Nov 2013 Ralph

Ralph (view profile)

Very useful submission. Just make sure the file already exists.

01 Oct 2013 Akansha Saxena

16 Jul 2013 Brett Shoelson

Brett Shoelson (view profile)

The first time you call the function, make sure that you have specified the filename properly, including the exact extension. ("XLS," "XLSX," ...). If appendToXLS doesn't find the Excel file, it will create a CSV-formatted one and operate on it. If that doesn't address your question, please feel free to contact me directly. Perhaps I could figure out specifics if I had your file to work with.

Comment only
12 Jul 2013 Javier

Javier (view profile)

thanks for sharing! I have a warning the second time I call the function:
Warning: Could not start Excel server for export.
XLSWRITE will attempt to write file in CSV format.
Do I have a problem with ActiveX. How could I solve it? Thanks a lot

14 May 2013 Zoltan

Zoltan (view profile)


14 Aug 2012 Rossella Blatt Vital

Very nice! Thanks!

07 Sep 2010 1.1

9/7/2010 Update to fix some intro verbiage.

01 Sep 2016

Updated license

Contact us