The documentation (R2012a) says:
[num,txt,raw] = xlsread(filename)
[num,txt,raw] = xlsread(filename,sheet,range)
I'm sure this has not changed during the last few years. The text, e.g. column headers, of the excel-file appears in both the second, i.e. txt, and third, i.e. raw, output argument.
Beware: Headers (of type General in Excel) with numeric values, e.g. 1234, confuses xlsread (and sometimes me). Row headers, i.e. text or datetime in the first column, cause the column indices of num and txt not to line up. In this case it might be more robust to use the third output argument
[~,~,raw] = xlsread(filename)
Make some experiments with a small xls-file.
--- EDIT in response to Answer 6 ---
I have downloaded stock_data.xls and run the following six lines of code line by line.
file_spec = 'h:\m\cssm\stock_data.xls';
[ num, txt, raw ] = xlsread( file_spec );
num( 1:3, : )
The results are:
Name Size Bytes Class Attributes
file_spec 1x24 48 char
num 575x4 18400 double
raw 576x5 352498 cell
txt 576x5 334098 cell
The size of the numerical array, num, is smaller than that of the two cell arrays.
>> num( 1:3, : )
30.8100 4.4500 71.9400 61.6700
30.9800 4.2900 72.2200 60.6300
30.3500 4.1900 72.1200 59.2900
The variable, num, only holds numeric data and the column and row indices differs from those in the Excel-sheet.
The first row of txt contains the headers! The first row of raw is identical to that of txt.
The first column of txt contains the dates. The specific date format depends on the "localization" of Windows.
I run this in with R2012a on Windows7 with Excel installed. The result will be the same with R2010b and previous versions of Windows and Excel.