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?
    21 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 (한국어)




