How to replace multiple xlsread commands
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have an older matlab code that reads multiple areas of a single excel sheet using multiple xls read commands. For example:
[NUM1 TXT1] = xlsread(myfile.xlsx,'Sheet1','A1:C10')
[NUM2,TXT2]= xlsread(myfile.xlsx,'Sheet1','Z200:AB500');
The data in the spreadsheet can be numerical or text, so having them split out like xlsread is handy for me (I use both the text and numerical data). I want to replace the multiple xls read commands with a single command to speed up the code, because the excel files are large and it takes a while to get all the data. I'm playing with a single readcell command and trying to get the data locations sorted out from the cell array but struggling with the multiple data types.
data=readcell(myfile.xlsx,'Sheet','Sheet1','Range','A1:AB500')
data1 = data(1:10,1:3)
Now data 1 is a cell array that contains A1:C10, but I need to get the numeric data and text data out of it in a way that replicates the [NUM1 TXT1] that I get from xlsread. Any ideas?
0 commentaires
Réponse acceptée
Matt J
le 24 Avr 2025
Modifié(e) : Matt J
le 24 Avr 2025
data1 = {'dog',1,3,'cat'; 10 12 'fish' 17}
idx=cellfun(@isnumeric,data1);
NUM1=nan(size(data1));
NUM1(idx)=cell2mat(data1(idx))
TXT1=data1;
TXT1(idx)={''}
5 commentaires
Matt J
le 24 Avr 2025
I would do,
nanmap=isnan(NUM1);
I=all(nanmap,2);
J=all(nanmap,1);
NUM1(I,J)=[];
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Spreadsheets dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!