MATLAB Answers

MATLAB 2019b readtable opts.DataRange import bug

12 views (last 30 days)
Konstantin Tkachuk
Konstantin Tkachuk on 15 Oct 2019
I am working with externally created Output.xlsx file importing it for the following processing. The code I am using:
fileToRead = 'OutputFile.xlsx'; %Enter name of file
mainSheet = 2; %Enter main sheet
%---------------------Parameters-for-Data-Reading--------------------------
opts = detectImportOptions(fileToRead, 'sheet', mainSheet, 'ReadVariableNames', false);
if (~isequal(opts.DataRange,'A19'))
opts.DataRange = 'A19';
end
%----------------------------Opening-of-xlsx-------------------------------
CostsFile = readtable('EnvironmentalCost.xlsx', 'ReadVariableNames', 1, 'ReadRowNames', 1);
Input1 = readtable(fileToRead, opts);
i=[1,14,27,40,53,66,79,92];
ValueMatrix = table2array(Input1(1:end,23:end));
if (~isequal(class(ValueMatrix),'double'))
ValueMatrix = str2double(ValueMatrix);
end
This code throws an error:Annotation 2019-10-15 154233.png
But, when I change the code in following way, without using opts. and directly opening the sheet it works.
%----------------------------Opening-of-xlsx-------------------------------
CostsFile = readtable('EnvironmentalCost.xlsx', 'ReadVariableNames', 1, 'ReadRowNames', 1);
Input1 = readtable('OutputFile.xlsx', 'sheet', 2);% - working for output file
i=[1,14,27,40,53,66,79,92];
ValueMatrix = table2array(Input1(18:end,23:end));
if (~isequal(class(ValueMatrix),'double'))
ValueMatrix = str2double(ValueMatrix);
end
This proves that there should be no errors within the table and there are no variables that are double and cell, but for some reason the error is thrown.
Another point is if I use another file generated by the same software and that has the same structure and as well data starts from A19, then everything works perfectly
fileToRead = 'Projekt A Analyse LCA.xlsx';
mainSheet = 1; %Enter main sheet
%---------------------Parameters-for-Data-Reading--------------------------
opts = detectImportOptions(fileToRead, 'sheet', mainSheet, 'ReadVariableNames', false);
if (~isequal(opts.DataRange,'A19'))
opts.DataRange = 'A19';
end
%----------------------------Opening-of-xlsx-------------------------------
CostsFile = readtable('EnvironmentalCost.xlsx', 'ReadVariableNames', 1, 'ReadRowNames', 1);
Input1 = readtable(fileToRead, opts);
i=[1,14,27,40,53,66,79,92];
ValueMatrix = table2array(Input1(1:end,23:end));
if (~isequal(class(ValueMatrix),'double'))
ValueMatrix = str2double(ValueMatrix);
end
ValueMatrix(isnan(ValueMatrix))=0;
So far I could not figure where is the problem and now considering submitting a bug report.
Is there any ideas how to fix this problem?

  0 Comments

Sign in to comment.

Answers (0)

Sign in to answer this question.

Products


Release

R2019b