How to get same xlsread "raw" output whithout using xlsread?

4 Ansichten (letzte 30 Tage)
langrg
langrg am 20 Sep. 2021
Kommentiert: langrg am 21 Sep. 2021
Hello,
xlsread is no more recommanded. So what is the correct solution to get exactly the same variable "raw" I was getting when using the following command :
[~, ~, raw] = xlsread('MyExcelFile.xls');
I have tried to use readcell function like this :
raw = readcell('MyExcelFile.xls', 'DateTimeType', 'text');
but that doesn't return me the same result :
  • When I was using xlsread, date was returned as text with format 'dd/mm/yyyy', example : '01/01/2014'
  • When I use readcell, date is returned as text with the exact same format as the cell in Excel 'dd-mmm-yyyy', example : '01-janv-2014'
I have to get the same result I got with xlsread, regardless of Excel language, regardless of Excel cells date format...
What is/are the command(s) I should use?
Other constraint : The command(s) do(es) not have to use/launch Excel.
Thanks!

Antworten (1)

Walter Roberson
Walter Roberson am 20 Sep. 2021
mask = cellfun(@isdatetime, YourCell);
YourCell(mask) = cellfun(@(DT) datetime(DT, 'format', 'dd/MM/yyyy'), 'uniform', 0);
Now the datetime objects will be reformatted to the style you want.
If you want text, then
mask = cellfun(@isdatetime, YourCell);
YourCell(mask) = cellfun(@(DT) char(datetime(DT, 'format', 'dd/MM/yyyy')), 'uniform', 0);
  6 Kommentare
Walter Roberson
Walter Roberson am 20 Sep. 2021
You might be able to use a 'Range' option to specifically read that line. If not then use
filename = 'MyExcelFile.xls';
opt = detectImportOptions(filename, 'DataTimeType', 'text', 'ReadVariableNames', false);
opt.DataLines = [1 inf];
table2cell(readtable(filename, opt))
langrg
langrg am 21 Sep. 2021
I don't have the option 'DataLines" available.
I think readtable is not the good solution because each column of a table must content same class data. My Excel file contains text and double in column 1 and 2.
readcell should be the right function, but I don't know why
readcell('MyExcelFile.xls', 'DateTimeType', 'datetime')
return an error while
readtable('MyExcelFile.xls', 'DateTimeType', 'datetime')
does not...

Melden Sie sich an, um zu kommentieren.

Produkte


Version

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by