xlsread isn't storing all the cell values from a column
Show older comments
I've been using xlsread for a while now, and I've never had Any problems with it.
Recently, however, whenever I try to import values from an excel sheet, each column having more than one cell (19 rows),
for some reason, only a single, unrelated value is stored in the variable created for that column.
Funnily enough, when i tried using readcell for one of the values (p4), I found that p1, p2 and p3 were saved appropriately, as 18 * 1 matrices.
(bottom right corner)

When I reverted back to xlsread for p4, p1,p2, p3 and p4 were again saved as single nonsensical values, although the plot containing p4 had the correct values.
(bottom right corner)

I've never had a problem with xlsread before, so could anyone give me some insight into what is happening?
3 Comments
Star Strider
on 5 May 2021
Post the Excel file. There may be something in it that xlsread doesn’t like.
Nivedita Tanksali
on 5 May 2021
Jeremy Hughes
on 5 May 2021
I'd suggest actual code instead of screenshots of code. It's a lot easier to work with that. Also attaching a real file so people can try the solution would help out.
Accepted Answer
More Answers (2)
David Fletcher
on 5 May 2021
0 votes
I don't know if this is the problem in your case, but Matlab docs have not recommended the use of xlsread since R2019a. That's not to say it doesn't work in most cases, but there are clearly some known issues with its use
2 Comments
Nivedita Tanksali
on 5 May 2021
Jeremy Hughes
on 5 May 2021
The fifth line is a call to readcell, not xlsread. And the error says, error using readcell.
Jeremy Hughes
on 5 May 2021
Edited: Jeremy Hughes
on 5 May 2021
The issue is in the call to readcell which isn't using the correct syntax. See readcell documentation for details.
It looks like you've tried to port an xlsread call to readcell withought modifying the inputs to match what readcell expects
[~,~,C] = xlsread(file,sheet,range);
becomes:
C = readcell(file,"Sheet",sheet,"Range",range);
addendum:
You probably want readmatrix actually
A = xlsread(file,sheet,range);
becomes:
A = readmatrix(file,"Sheet",sheet,"Range",range);
3 Comments
Nivedita Tanksali
on 5 May 2021
Nivedita Tanksali
on 5 May 2021
Jeremy Hughes
on 6 May 2021
From the example file, it looks like there is only "Sheet1" and no "Poly3 for 10s angles vs time"
The error message is suggesing "specify the sheet by its worksheet index." meaning use a number instead of the name.
Categories
Find more on Data Import from MATLAB in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
