You are now following this question
- You will see updates in your followed content feed.
- You may receive emails, depending on your communication preferences.
How to read all rows of an Excel with missing rows included?
15 views (last 30 days)
Show older comments
My goal is to read all contents of an Excel file as cells using the function "readcell". However, every time when I used this function, it automatically eliminates any rows with missing contents above. How do I force this function to read the entire content of an Excel file with the missing rows above included?
4 Comments
Leon
on 9 Mar 2025
Thanks for the reply.
Yes, any missing rows in between will always be included. The issue I'm having is with missing rows above the data, something like the below:
ans = 3x3 cell array
{[<missing>]} {[<missing>]} {[<missing>]}
{[ 1]} {[ 2]} {[ 3]}
{[ 4]} {[ 5]} {[ 6]}
Image Analyst
on 9 Mar 2025
Edited: Image Analyst
on 9 Mar 2025
If you have any more questions, then attach your data and code to read it in with the paperclip icon after you read this:
Leon
on 9 Mar 2025
See attached for an example dataset.
The first 3 rows have no data, but it is important to read them into my cell array. Otherwise, the location of the header row is messed up.
My header row locaiton is determined as below. It did consider the missing rows. That's the main reason I want to read the missing values in.
opts = detectImportOptions('test2.xlsx');
headerRowNo = str2double(extract(opts.VariableNamesRange, digitsPattern));
Accepted Answer
dpb
on 9 Mar 2025
Edited: dpb
on 9 Mar 2025
Actually, I had forgotten until the error message above reminded me...there is one way without the import options struct, but it uses an undocumented argument list named parameter pair...so it's unlikely one will think of trying it.
fn='test2.xlsx';
c=readcell(fn,'DataRange','A1')
c = 23x19 cell array
Columns 1 through 10
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{'Metadaa info'} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{'Metada info2'} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{'EXPOCODE' } {'Cruise_flag'} {[<missing>]} {'STATION_ID'} {'CAST_NO' } {'NISKIN_ID'} {'NISKIN_FLAG'} {'SAMPLE_ID'} {'YEAR_UTC' } {'MONTH_UTC'}
{'32P020130821'} {'A' } {[<missing>]} {[ 1]} {[ 2]} {[ 1]} {[ 2]} {[ 10201]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 2]} {[ 2]} {[ 2]} {[ 2]} {[ 20202]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 3]} {[ 2]} {[ 3]} {[ 2]} {[ 30203]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 4]} {[ 2]} {[ 4]} {[ 2]} {[ 40204]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 5]} {[ 2]} {[ 5]} {[ 2]} {[ 50205]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 6]} {[ 2]} {[ 6]} {[ 2]} {[ 60206]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 7]} {[ 2]} {[ 7]} {[ 2]} {[ 70207]} {[ 2013]} {[ 8]}
Columns 11 through 18
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{'DAY_UTC' } {'TIME_UTC' } {'LATITUDE_DECIMAL'} {'LONGITUDE_DECIMAL'} {'DEPTH_BOTTOM_M...'} {'CTDPRESSURE_DBAR'} {'CTDTEMP_ITS90_...'} {'CTDSAL_PSS78'}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.5130]} {[ 7.5640]} {[ 33.8121]}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4670]} {[ 7.5640]} {[ 33.8121]}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4000]} {[ 7.5640]} {[ 33.8121]}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4520]} {[ 7.5639]} {[ 33.8122]}
{[ 21]} {[ 0.7298]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.5040]} {[ 7.5638]} {[ 33.8122]}
{[ 21]} {[ 0.7298]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4620]} {[ 7.5637]} {[ 33.8123]}
{[ 21]} {[ 0.7298]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4800]} {[ 7.5637]} {[ 33.8124]}
Column 19
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{'CTDSAL_FLAG'}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
The documentation still has only 'Range' as the named parameter and indicates that should control where the data are read from, but as we've seen here, it doesn't.
I haven't tried but I presume that maybe one can specify any fieldname that exists in the appropriate type of import object struct; note that it is 'DataRange' there.
I don't recall if I've submitted this as bug/enhancement/documentation error or not...it really should be on their hit list of fixes one way or another.
I just checked to see if newer documentation showed anything different, but it still has the same descripation at readcell
1 Comment
More Answers (3)
dpb
on 9 Mar 2025
Edited: dpb
on 9 Mar 2025
You can see if it has been fixed (I submitted bug/enhancement report quite some time ago), but I'm still at R2021b, but
readcell('tst.xlsx','range','A1')
should work, but it didn't as of R2021b
The simplest workaround uses an import data options object--
opt=detetctimportoptions('test.xlsx'); % create the base default import struct
opt.DataRange='A1'; % tell it to read data from the start
readcell('test.xlsx',opt) % read using the import options
Locally, R2021b
>> readcell('test.xlsx','range','A1')
ans =
3×3 cell array
{[ 1.00]} {[ 2.00]} {[ 3.00]}
{1×1 missing} {1×1 missing} {1×1 missing}
{[ 4.00]} {[ 5.00]} {[ 6.00]}
>> opt=detectImportOptions('test.xlsx')
opt =
SpreadsheetImportOptions with properties:
Sheet Properties:
Sheet: ''
Replacement Properties:
MissingRule: 'fill'
ImportErrorRule: 'fill'
Variable Import Properties: Set types by name using setvartype
VariableNames: {'Var1', 'Var2', 'Var3'}
VariableTypes: {'double', 'double', 'double'}
SelectedVariableNames: {'Var1', 'Var2', 'Var3'}
VariableOptions: Show all 3 VariableOptions
Access VariableOptions sub-properties using setvaropts/getvaropts
VariableNamingRule: 'modify'
Range Properties:
DataRange: 'A2' (Start Cell)
VariableNamesRange: ''
RowNamesRange: ''
VariableUnitsRange: ''
VariableDescriptionsRange: ''
To display a preview of the table, use preview
>> opt.DataRange='A1';
>> readcell('test.xlsx',opt)
ans =
4×3 cell array
{1×1 missing} {1×1 missing} {1×1 missing}
{[ 1.00]} {[ 2.00]} {[ 3.00]}
{1×1 missing} {1×1 missing} {1×1 missing}
{[ 4.00]} {[ 5.00]} {[ 6.00]}
>>
1 Comment
dpb
on 9 Mar 2025
readcell('test2.xlsx') % default fails to read blank line
ans = 20x19 cell array
Columns 1 through 10
{'Metadaa info'} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{'Metada info2'} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{'EXPOCODE' } {'Cruise_flag'} {[<missing>]} {'STATION_ID'} {'CAST_NO' } {'NISKIN_ID'} {'NISKIN_FLAG'} {'SAMPLE_ID'} {'YEAR_UTC' } {'MONTH_UTC'}
{'32P020130821'} {'A' } {[<missing>]} {[ 1]} {[ 2]} {[ 1]} {[ 2]} {[ 10201]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 2]} {[ 2]} {[ 2]} {[ 2]} {[ 20202]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 3]} {[ 2]} {[ 3]} {[ 2]} {[ 30203]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 4]} {[ 2]} {[ 4]} {[ 2]} {[ 40204]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 5]} {[ 2]} {[ 5]} {[ 2]} {[ 50205]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 6]} {[ 2]} {[ 6]} {[ 2]} {[ 60206]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 7]} {[ 2]} {[ 7]} {[ 2]} {[ 70207]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 8]} {[ 2]} {[ 8]} {[ 2]} {[ 80208]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 9]} {[ 2]} {[ 9]} {[ 2]} {[ 90209]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 10]} {[ 2]} {[ 10]} {[ 2]} {[ 100210]} {[ 2013]} {[ 8]}
Columns 11 through 18
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{'DAY_UTC' } {'TIME_UTC' } {'LATITUDE_DECIMAL'} {'LONGITUDE_DECIMAL'} {'DEPTH_BOTTOM_M...'} {'CTDPRESSURE_DBAR'} {'CTDTEMP_ITS90_...'} {'CTDSAL_PSS78'}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.5130]} {[ 7.5640]} {[ 33.8121]}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4670]} {[ 7.5640]} {[ 33.8121]}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4000]} {[ 7.5640]} {[ 33.8121]}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4520]} {[ 7.5639]} {[ 33.8122]}
{[ 21]} {[ 0.7298]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.5040]} {[ 7.5638]} {[ 33.8122]}
{[ 21]} {[ 0.7298]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4620]} {[ 7.5637]} {[ 33.8123]}
{[ 21]} {[ 0.7298]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4800]} {[ 7.5637]} {[ 33.8124]}
{[ 21]} {[ 0.7310]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4810]} {[ 7.5647]} {[ 33.8114]}
{[ 21]} {[ 0.7322]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 29.8690]} {[ 7.5750]} {[ 33.8007]}
{[ 21]} {[ 0.7337]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 19.8430]} {[ 7.7612]} {[ 33.7177]}
Column 19
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{'CTDSAL_FLAG'}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
readcell('test2.xlsx','range','A1') % has starting range been fixed yet???
ans = 20x19 cell array
Columns 1 through 10
{'Metadaa info'} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{'Metada info2'} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{'EXPOCODE' } {'Cruise_flag'} {[<missing>]} {'STATION_ID'} {'CAST_NO' } {'NISKIN_ID'} {'NISKIN_FLAG'} {'SAMPLE_ID'} {'YEAR_UTC' } {'MONTH_UTC'}
{'32P020130821'} {'A' } {[<missing>]} {[ 1]} {[ 2]} {[ 1]} {[ 2]} {[ 10201]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 2]} {[ 2]} {[ 2]} {[ 2]} {[ 20202]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 3]} {[ 2]} {[ 3]} {[ 2]} {[ 30203]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 4]} {[ 2]} {[ 4]} {[ 2]} {[ 40204]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 5]} {[ 2]} {[ 5]} {[ 2]} {[ 50205]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 6]} {[ 2]} {[ 6]} {[ 2]} {[ 60206]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 7]} {[ 2]} {[ 7]} {[ 2]} {[ 70207]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 8]} {[ 2]} {[ 8]} {[ 2]} {[ 80208]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 9]} {[ 2]} {[ 9]} {[ 2]} {[ 90209]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 10]} {[ 2]} {[ 10]} {[ 2]} {[ 100210]} {[ 2013]} {[ 8]}
Columns 11 through 18
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{'DAY_UTC' } {'TIME_UTC' } {'LATITUDE_DECIMAL'} {'LONGITUDE_DECIMAL'} {'DEPTH_BOTTOM_M...'} {'CTDPRESSURE_DBAR'} {'CTDTEMP_ITS90_...'} {'CTDSAL_PSS78'}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.5130]} {[ 7.5640]} {[ 33.8121]}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4670]} {[ 7.5640]} {[ 33.8121]}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4000]} {[ 7.5640]} {[ 33.8121]}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4520]} {[ 7.5639]} {[ 33.8122]}
{[ 21]} {[ 0.7298]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.5040]} {[ 7.5638]} {[ 33.8122]}
{[ 21]} {[ 0.7298]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4620]} {[ 7.5637]} {[ 33.8123]}
{[ 21]} {[ 0.7298]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4800]} {[ 7.5637]} {[ 33.8124]}
{[ 21]} {[ 0.7310]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4810]} {[ 7.5647]} {[ 33.8114]}
{[ 21]} {[ 0.7322]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 29.8690]} {[ 7.5750]} {[ 33.8007]}
{[ 21]} {[ 0.7337]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 19.8430]} {[ 7.7612]} {[ 33.7177]}
Column 19
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{'CTDSAL_FLAG'}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
No, it hasn't.
readcell('test2.xlsx','numheaderlines',0)
ans = 20x19 cell array
Columns 1 through 10
{'Metadaa info'} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{'Metada info2'} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{'EXPOCODE' } {'Cruise_flag'} {[<missing>]} {'STATION_ID'} {'CAST_NO' } {'NISKIN_ID'} {'NISKIN_FLAG'} {'SAMPLE_ID'} {'YEAR_UTC' } {'MONTH_UTC'}
{'32P020130821'} {'A' } {[<missing>]} {[ 1]} {[ 2]} {[ 1]} {[ 2]} {[ 10201]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 2]} {[ 2]} {[ 2]} {[ 2]} {[ 20202]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 3]} {[ 2]} {[ 3]} {[ 2]} {[ 30203]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 4]} {[ 2]} {[ 4]} {[ 2]} {[ 40204]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 5]} {[ 2]} {[ 5]} {[ 2]} {[ 50205]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 6]} {[ 2]} {[ 6]} {[ 2]} {[ 60206]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 7]} {[ 2]} {[ 7]} {[ 2]} {[ 70207]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 8]} {[ 2]} {[ 8]} {[ 2]} {[ 80208]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 9]} {[ 2]} {[ 9]} {[ 2]} {[ 90209]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 10]} {[ 2]} {[ 10]} {[ 2]} {[ 100210]} {[ 2013]} {[ 8]}
Columns 11 through 18
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{'DAY_UTC' } {'TIME_UTC' } {'LATITUDE_DECIMAL'} {'LONGITUDE_DECIMAL'} {'DEPTH_BOTTOM_M...'} {'CTDPRESSURE_DBAR'} {'CTDTEMP_ITS90_...'} {'CTDSAL_PSS78'}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.5130]} {[ 7.5640]} {[ 33.8121]}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4670]} {[ 7.5640]} {[ 33.8121]}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4000]} {[ 7.5640]} {[ 33.8121]}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4520]} {[ 7.5639]} {[ 33.8122]}
{[ 21]} {[ 0.7298]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.5040]} {[ 7.5638]} {[ 33.8122]}
{[ 21]} {[ 0.7298]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4620]} {[ 7.5637]} {[ 33.8123]}
{[ 21]} {[ 0.7298]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4800]} {[ 7.5637]} {[ 33.8124]}
{[ 21]} {[ 0.7310]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4810]} {[ 7.5647]} {[ 33.8114]}
{[ 21]} {[ 0.7322]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 29.8690]} {[ 7.5750]} {[ 33.8007]}
{[ 21]} {[ 0.7337]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 19.8430]} {[ 7.7612]} {[ 33.7177]}
Column 19
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{'CTDSAL_FLAG'}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
opt=detectImportOptions('test2.xlsx')
opt =
SpreadsheetImportOptions with properties:
Sheet Properties:
Sheet: ''
Replacement Properties:
MissingRule: 'fill'
ImportErrorRule: 'fill'
MergedCellColumnRule: 'placeleft'
MergedCellRowRule: 'placetop'
Variable Import Properties: Set types by name using setvartype
VariableNames: {'EXPOCODE', 'Cruise_flag', 'Var3' ... and 16 more}
VariableTypes: {'char', 'char', 'char' ... and 16 more}
SelectedVariableNames: {'EXPOCODE', 'Cruise_flag', 'Var3' ... and 16 more}
VariableOptions: [1-by-19 matlab.io.VariableImportOptions]
Access VariableOptions sub-properties using setvaropts/getvaropts
VariableNamingRule: 'modify'
Range Properties:
DataRange: 'A10' (Start Cell)
VariableNamesRange: 'A9'
RowNamesRange: ''
VariableUnitsRange: ''
VariableDescriptionsRange: ''
To display a preview of the table, use preview
opt.DataRange='A1';
readcell('test2.xlsx',opt)
ans = 23x19 cell array
Columns 1 through 10
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{'Metadaa info'} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{'Metada info2'} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{'EXPOCODE' } {'Cruise_flag'} {[<missing>]} {'STATION_ID'} {'CAST_NO' } {'NISKIN_ID'} {'NISKIN_FLAG'} {'SAMPLE_ID'} {'YEAR_UTC' } {'MONTH_UTC'}
{'32P020130821'} {'A' } {[<missing>]} {[ 1]} {[ 2]} {[ 1]} {[ 2]} {[ 10201]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 2]} {[ 2]} {[ 2]} {[ 2]} {[ 20202]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 3]} {[ 2]} {[ 3]} {[ 2]} {[ 30203]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 4]} {[ 2]} {[ 4]} {[ 2]} {[ 40204]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 5]} {[ 2]} {[ 5]} {[ 2]} {[ 50205]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 6]} {[ 2]} {[ 6]} {[ 2]} {[ 60206]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 7]} {[ 2]} {[ 7]} {[ 2]} {[ 70207]} {[ 2013]} {[ 8]}
Columns 11 through 18
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{'DAY_UTC' } {'TIME_UTC' } {'LATITUDE_DECIMAL'} {'LONGITUDE_DECIMAL'} {'DEPTH_BOTTOM_M...'} {'CTDPRESSURE_DBAR'} {'CTDTEMP_ITS90_...'} {'CTDSAL_PSS78'}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.5130]} {[ 7.5640]} {[ 33.8121]}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4670]} {[ 7.5640]} {[ 33.8121]}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4000]} {[ 7.5640]} {[ 33.8121]}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4520]} {[ 7.5639]} {[ 33.8122]}
{[ 21]} {[ 0.7298]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.5040]} {[ 7.5638]} {[ 33.8122]}
{[ 21]} {[ 0.7298]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4620]} {[ 7.5637]} {[ 33.8123]}
{[ 21]} {[ 0.7298]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4800]} {[ 7.5637]} {[ 33.8124]}
Column 19
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{'CTDSAL_FLAG'}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
readcell('test2.xlsx','numheaderlines',0,'range','A1')
Error using readcell (line 162)
Supplying 'NumHeaderLines' with 'Range' or 'DataRange' is only supported when the range value is of the form 'A:B' (column-select).
Supplying 'NumHeaderLines' with 'Range' or 'DataRange' is only supported when the range value is of the form 'A:B' (column-select).
Sulaymon Eshkabilov
on 9 Mar 2025
You can consider specifying which sheet and which range of cells to be read/imported using readcell() or readtable():
% READCELL()
D1 = readcell("tst.xlsx", Sheet=1, Range = 'A1:C5')
D1 = 5x3 cell array
{[ 1]} {[ 2]} {[ 3]}
{[<missing>]} {[<missing>]} {[<missing>]}
{[ 4]} {[ 5]} {[ 6]}
{[<missing>]} {[<missing>]} {[<missing>]}
{[<missing>]} {[<missing>]} {[<missing>]}
% READTABLE()
D2 = readtable("tst.xlsx", Sheet=1, Range = 'A1:C5')
D2 = 5x3 table
Var1 Var2 Var3
____ ____ ____
1 2 3
NaN NaN NaN
4 5 6
NaN NaN NaN
NaN NaN NaN
4 Comments
dpb
on 9 Mar 2025
Works, but then you need to know the actual size of the file a priori which is inconvenient at best...
Sulaymon Eshkabilov
on 9 Mar 2025
Moved: Matt J
on 9 Mar 2025
Here is the code with readcell() and readtable() with default options and adjusted options to read/import data from Cell A1.
Note that readcell() does the job with its default settings as well.
% READCELL()
D1 = readcell("test2.xlsx", Sheet=1) % Default Settings with the start
D1 = 20x19 cell array
Columns 1 through 10
{'Metadaa info'} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{'Metada info2'} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{'EXPOCODE' } {'Cruise_flag'} {[<missing>]} {'STATION_ID'} {'CAST_NO' } {'NISKIN_ID'} {'NISKIN_FLAG'} {'SAMPLE_ID'} {'YEAR_UTC' } {'MONTH_UTC'}
{'32P020130821'} {'A' } {[<missing>]} {[ 1]} {[ 2]} {[ 1]} {[ 2]} {[ 10201]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 2]} {[ 2]} {[ 2]} {[ 2]} {[ 20202]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 3]} {[ 2]} {[ 3]} {[ 2]} {[ 30203]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 4]} {[ 2]} {[ 4]} {[ 2]} {[ 40204]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 5]} {[ 2]} {[ 5]} {[ 2]} {[ 50205]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 6]} {[ 2]} {[ 6]} {[ 2]} {[ 60206]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 7]} {[ 2]} {[ 7]} {[ 2]} {[ 70207]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 8]} {[ 2]} {[ 8]} {[ 2]} {[ 80208]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 9]} {[ 2]} {[ 9]} {[ 2]} {[ 90209]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 10]} {[ 2]} {[ 10]} {[ 2]} {[ 100210]} {[ 2013]} {[ 8]}
Columns 11 through 18
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{'DAY_UTC' } {'TIME_UTC' } {'LATITUDE_DECIMAL'} {'LONGITUDE_DECIMAL'} {'DEPTH_BOTTOM_M...'} {'CTDPRESSURE_DBAR'} {'CTDTEMP_ITS90_...'} {'CTDSAL_PSS78'}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.5130]} {[ 7.5640]} {[ 33.8121]}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4670]} {[ 7.5640]} {[ 33.8121]}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4000]} {[ 7.5640]} {[ 33.8121]}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4520]} {[ 7.5639]} {[ 33.8122]}
{[ 21]} {[ 0.7298]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.5040]} {[ 7.5638]} {[ 33.8122]}
{[ 21]} {[ 0.7298]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4620]} {[ 7.5637]} {[ 33.8123]}
{[ 21]} {[ 0.7298]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4800]} {[ 7.5637]} {[ 33.8124]}
{[ 21]} {[ 0.7310]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4810]} {[ 7.5647]} {[ 33.8114]}
{[ 21]} {[ 0.7322]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 29.8690]} {[ 7.5750]} {[ 33.8007]}
{[ 21]} {[ 0.7337]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 19.8430]} {[ 7.7612]} {[ 33.7177]}
Column 19
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{'CTDSAL_FLAG'}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
% READCELL()
D1_ALT = readcell("test2.xlsx", Sheet=1, Range = 'A1') % Start reading/importing from Cell A1 in Test2.xlsx
D1_ALT = 20x19 cell array
Columns 1 through 10
{'Metadaa info'} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{'Metada info2'} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{[<missing> ]} {[<missing> ]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing> ]} {[<missing>]} {[<missing>]} {[<missing>]}
{'EXPOCODE' } {'Cruise_flag'} {[<missing>]} {'STATION_ID'} {'CAST_NO' } {'NISKIN_ID'} {'NISKIN_FLAG'} {'SAMPLE_ID'} {'YEAR_UTC' } {'MONTH_UTC'}
{'32P020130821'} {'A' } {[<missing>]} {[ 1]} {[ 2]} {[ 1]} {[ 2]} {[ 10201]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 2]} {[ 2]} {[ 2]} {[ 2]} {[ 20202]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 3]} {[ 2]} {[ 3]} {[ 2]} {[ 30203]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 4]} {[ 2]} {[ 4]} {[ 2]} {[ 40204]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 5]} {[ 2]} {[ 5]} {[ 2]} {[ 50205]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 6]} {[ 2]} {[ 6]} {[ 2]} {[ 60206]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 7]} {[ 2]} {[ 7]} {[ 2]} {[ 70207]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 8]} {[ 2]} {[ 8]} {[ 2]} {[ 80208]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 9]} {[ 2]} {[ 9]} {[ 2]} {[ 90209]} {[ 2013]} {[ 8]}
{'32P020130821'} {'A' } {[<missing>]} {[ 10]} {[ 2]} {[ 10]} {[ 2]} {[ 100210]} {[ 2013]} {[ 8]}
Columns 11 through 18
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{[<missing>]} {[<missing>]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]} {[<missing> ]}
{'DAY_UTC' } {'TIME_UTC' } {'LATITUDE_DECIMAL'} {'LONGITUDE_DECIMAL'} {'DEPTH_BOTTOM_M...'} {'CTDPRESSURE_DBAR'} {'CTDTEMP_ITS90_...'} {'CTDSAL_PSS78'}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.5130]} {[ 7.5640]} {[ 33.8121]}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4670]} {[ 7.5640]} {[ 33.8121]}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4000]} {[ 7.5640]} {[ 33.8121]}
{[ 21]} {[ 0.7297]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4520]} {[ 7.5639]} {[ 33.8122]}
{[ 21]} {[ 0.7298]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.5040]} {[ 7.5638]} {[ 33.8122]}
{[ 21]} {[ 0.7298]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4620]} {[ 7.5637]} {[ 33.8123]}
{[ 21]} {[ 0.7298]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4800]} {[ 7.5637]} {[ 33.8124]}
{[ 21]} {[ 0.7310]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 36.4810]} {[ 7.5647]} {[ 33.8114]}
{[ 21]} {[ 0.7322]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 29.8690]} {[ 7.5750]} {[ 33.8007]}
{[ 21]} {[ 0.7337]} {[ 44.6513]} {[ -124.1302]} {[ 46]} {[ 19.8430]} {[ 7.7612]} {[ 33.7177]}
Column 19
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{[<missing> ]}
{'CTDSAL_FLAG'}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
{[ 2]}
% READTABLE()
D2 = readtable("test2.xlsx", Sheet=1)
D2 = 14x19 table
EXPOCODE Cruise_flag Var3 STATION_ID CAST_NO NISKIN_ID NISKIN_FLAG SAMPLE_ID YEAR_UTC MONTH_UTC DAY_UTC TIME_UTC LATITUDE_DECIMAL LONGITUDE_DECIMAL DEPTH_BOTTOM_METER CTDPRESSURE_DBAR CTDTEMP_ITS90_DEG_C CTDSAL_PSS78 CTDSAL_FLAG
________________ ___________ ____ __________ _______ _________ ___________ __________ ________ _________ _______ ________ ________________ _________________ __________________ ________________ ___________________ ____________ ___________
{'32P020130821'} {'A'} NaN 1 2 1 2 10201 2013 8 21 0.72968 44.651 -124.13 46 36.513 7.564 33.812 2
{'32P020130821'} {'A'} NaN 2 2 2 2 20202 2013 8 21 0.72969 44.651 -124.13 46 36.467 7.564 33.812 2
{'32P020130821'} {'A'} NaN 3 2 3 2 30203 2013 8 21 0.72971 44.651 -124.13 46 36.4 7.564 33.812 2
{'32P020130821'} {'A'} NaN 4 2 4 2 40204 2013 8 21 0.72973 44.651 -124.13 46 36.452 7.5639 33.812 2
{'32P020130821'} {'A'} NaN 5 2 5 2 50205 2013 8 21 0.72978 44.651 -124.13 46 36.504 7.5638 33.812 2
{'32P020130821'} {'A'} NaN 6 2 6 2 60206 2013 8 21 0.7298 44.651 -124.13 46 36.462 7.5637 33.812 2
{'32P020130821'} {'A'} NaN 7 2 7 2 70207 2013 8 21 0.72984 44.651 -124.13 46 36.48 7.5637 33.812 2
{'32P020130821'} {'A'} NaN 8 2 8 2 80208 2013 8 21 0.73101 44.651 -124.13 46 36.481 7.5647 33.811 2
{'32P020130821'} {'A'} NaN 9 2 9 2 90209 2013 8 21 0.7322 44.651 -124.13 46 29.869 7.575 33.801 2
{'32P020130821'} {'A'} NaN 10 2 10 2 1.0021e+05 2013 8 21 0.73366 44.651 -124.13 46 19.843 7.7612 33.718 2
{'32P020130821'} {'A'} NaN 11 2 11 2 1.1021e+05 2013 8 21 0.73498 44.651 -124.13 46 9.789 8.044 33.637 2
{'32P020130821'} {'A'} NaN 12 2 12 2 1.2021e+05 2013 8 21 0.73601 44.651 -124.13 46 2.548 8.3666 33.588 2
{'32P020130821'} {'A'} NaN 13 1 1 2 1.301e+05 2013 8 21 0.82944 44.651 -124.3 80 71.057 7.4333 33.828 2
{'32P020130821'} {'A'} NaN 14 1 2 2 1.401e+05 2013 8 21 0.8295 44.651 -124.3 80 71.242 7.4314 33.829 2
% READTABLE()
D2ALT = readtable("test2.xlsx", Sheet=1, Range = 'A1') % Start reading/importing from Cell A1
D2ALT = 14x19 table
EXPOCODE Cruise_flag Var3 STATION_ID CAST_NO NISKIN_ID NISKIN_FLAG SAMPLE_ID YEAR_UTC MONTH_UTC DAY_UTC TIME_UTC LATITUDE_DECIMAL LONGITUDE_DECIMAL DEPTH_BOTTOM_METER CTDPRESSURE_DBAR CTDTEMP_ITS90_DEG_C CTDSAL_PSS78 CTDSAL_FLAG
________________ ___________ ____ __________ _______ _________ ___________ __________ ________ _________ _______ ________ ________________ _________________ __________________ ________________ ___________________ ____________ ___________
{'32P020130821'} {'A'} NaN 1 2 1 2 10201 2013 8 21 0.72968 44.651 -124.13 46 36.513 7.564 33.812 2
{'32P020130821'} {'A'} NaN 2 2 2 2 20202 2013 8 21 0.72969 44.651 -124.13 46 36.467 7.564 33.812 2
{'32P020130821'} {'A'} NaN 3 2 3 2 30203 2013 8 21 0.72971 44.651 -124.13 46 36.4 7.564 33.812 2
{'32P020130821'} {'A'} NaN 4 2 4 2 40204 2013 8 21 0.72973 44.651 -124.13 46 36.452 7.5639 33.812 2
{'32P020130821'} {'A'} NaN 5 2 5 2 50205 2013 8 21 0.72978 44.651 -124.13 46 36.504 7.5638 33.812 2
{'32P020130821'} {'A'} NaN 6 2 6 2 60206 2013 8 21 0.7298 44.651 -124.13 46 36.462 7.5637 33.812 2
{'32P020130821'} {'A'} NaN 7 2 7 2 70207 2013 8 21 0.72984 44.651 -124.13 46 36.48 7.5637 33.812 2
{'32P020130821'} {'A'} NaN 8 2 8 2 80208 2013 8 21 0.73101 44.651 -124.13 46 36.481 7.5647 33.811 2
{'32P020130821'} {'A'} NaN 9 2 9 2 90209 2013 8 21 0.7322 44.651 -124.13 46 29.869 7.575 33.801 2
{'32P020130821'} {'A'} NaN 10 2 10 2 1.0021e+05 2013 8 21 0.73366 44.651 -124.13 46 19.843 7.7612 33.718 2
{'32P020130821'} {'A'} NaN 11 2 11 2 1.1021e+05 2013 8 21 0.73498 44.651 -124.13 46 9.789 8.044 33.637 2
{'32P020130821'} {'A'} NaN 12 2 12 2 1.2021e+05 2013 8 21 0.73601 44.651 -124.13 46 2.548 8.3666 33.588 2
{'32P020130821'} {'A'} NaN 13 1 1 2 1.301e+05 2013 8 21 0.82944 44.651 -124.3 80 71.057 7.4333 33.828 2
{'32P020130821'} {'A'} NaN 14 1 2 2 1.401e+05 2013 8 21 0.8295 44.651 -124.3 80 71.242 7.4314 33.829 2
Sulaymon Eshkabilov
on 9 Mar 2025
Moved: Matt J
on 9 Mar 2025
Note that I am using this online MATLAB.
dpb
on 9 Mar 2025
No, it doesn't read the initial opening empty lines per OP's request in any of the above, the metainfo data is actually the fourth line in the Excel file, the three blank lines preceding it have not been returned.
See the <examples I added as a comment to my earlier Answer> to see the actual content of the beginning of the file.
Matt J
on 9 Mar 2025
Edited: Matt J
on 9 Mar 2025
ActiveX can be used to determine the last row/column of the worksheet: Then, you can force readcell to read in a larger range with the Range option:
[lastRow,lastCol] = getLastCell('TST.xlsx')
lastRow =
3
lastCol =
4
readcell('TST.xlsx',Range=[1,1,lastRow,lastCol])
ans =
3×4 cell array
{[<missing>]} {[<missing>]} {[<missing>]} {[<missing>]}
{[ 1]} {[ 2]} {[ 3]} {[ 50]}
{[ 4]} {[ 5]} {[ 6]} {[ 70]}
function [lastRow,lastCol] = getLastCell(filename)
sheet = 1; % Change if needed
% Open Excel via ActiveX
excel = actxserver('Excel.Application');
wb = excel.Workbooks.Open(fullfile(pwd, filename));
ws = wb.Sheets.Item(sheet);
% Get the UsedRange
range = ws.UsedRange;
% Get the first used row/column index
firstRow = range.Row; % First used row index
firstCol = range.Column; % First used column index
% Get number of rows and columns in the UsedRange
numRows = range.Rows.Count;
numCols = range.Columns.Count;
% Compute the last used row/column index
lastRow = firstRow + numRows - 1;
lastCol = firstCol + numCols - 1;
% Clean up
wb.Close(false);
excel.Quit();
delete(excel);
end
7 Comments
dpb
on 9 Mar 2025
Edited: dpb
on 9 Mar 2025
The above can be made a little more user intuitive
function usedRange=getLastCell(filename)
% return used range address of current active workbook active sheet...
% Open Excel via ActiveX
excel = actxserver('Excel.Application');
wbk=excel.Workbooks.Open(fullfile(pwd, filename));
usedRange=wbk.ActiveSheet.UsedRange.Address;
wbk.Close(0)
excel.Quit
delete(excel)
end
This returns a char string address range all ready for use -- although you may need to strip the absolute address references before MATLAB readXXX family routines will accept it. There's a current enhancement request under evalutaion to remove this limitation; as of now, an absolute address likely will fail silently.
To handle that, one could instead use
usedRange=strrep(wbk.ActiveSheet.UsedRange.Address,'$','');
instead.
Matt J
on 9 Mar 2025
It's not quit 'ready for use' even after removing the '$' characters, because the upper left corner coordinate needs to be changed to A1
dpb
on 9 Mar 2025
Edited: dpb
on 9 Mar 2025
>> excel=actxserver('Excel.Application');
>> wbk=excel.Workbooks.Open(fullfile(pwd,'test.xlsx'));
>> usedRange=wbk.ActiveSheet.UsedRange;
>> usedRange.Address
ans =
'$A$1:$C$4'
>> excel.ActiveWorkbook.Close(0)
>> excel.Quit
>> delete(excel)
It returns the entire used range...
More likely causes of problems with this approach lie in that the used range may indicate a larger area of the sheet than what actually contains current data. If there has been more on the specific worksheet at some point that has only been cleared but not deleted, UsedRange may still reference that prior larger area.
Matt J
on 9 Mar 2025
Edited: Matt J
on 9 Mar 2025
But that's not what you want. If the range starts at A2, like the attached, you want to change it to A1.
>> excel=actxserver('Excel.Application');
>> wbk=excel.Workbooks.Open(fullfile(pwd,'TST.xlsx'));
>> usedRange=wbk.ActiveSheet.UsedRange;
>> usedRange.Address
ans =
'$A$2:$D$3'
Matt J
on 9 Mar 2025
It's not a manipulation. The use case given by the OP was that the spreadsheet my contain blank initial lines.
See Also
Categories
Find more on Spreadsheets in Help Center and File Exchange
Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!An Error Occurred
Unable to complete the action because of changes made to the page. Reload the page to see its updated state.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom(English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)