MATLAB Answers

How to extract certain rows and columns with the readtable option for Excel files.

43 views (last 30 days)
FW
FW on 24 Jan 2020 at 17:30
Commented: FW on 25 Jan 2020 at 16:21
Suppose we have an Excel file Data.xlsx. The file have certain descriptive text in the initial rows and then there is tabular data on several sheets. I would like to extract column 1 and column 3 but the useful row number starts from say, 30 and ends at 10000.
Table1=readtable('Data.xlsx', 'Sheet', 'Signal', 'Range', 'A:C');
Is there a better way to read such an Excel file? There is a lot of text in the initial rows of the Excel file. This is default way the instrument exports the data. How can we only read column A and column C whose useful rows start from 30 and end at 10000?
Thanks.

  0 Comments

Sign in to comment.

Answers (1)

Sindar
Sindar on 24 Jan 2020 at 18:07
Edited: Sindar on 24 Jan 2020 at 20:20
(edited)
Using the import tool, then generating code and clearing unnecessary details, this appears to be the way:
opts = spreadsheetImportOptions("NumVariables", 3);
% Specify sheet and range
opts.Sheet = "Signal";
opts.DataRange = "A30:C10000";
% Specify column names and types
opts.VariableNames = ["A", "Var2", "C"];
opts.SelectedVariableNames = ["A", "C"];
% Import the data
Table1 = readtable("Data.xlsx", opts);

  7 Comments

Show 4 older comments
Sindar
Sindar on 25 Jan 2020 at 1:22
Try adding this line before readtable:
opts.VariableTypes = ["double", "char", "double"];
I assumed it would default correctly, but maybe not
Sindar
Sindar on 25 Jan 2020 at 2:44
Try looking at Table1.Variables, rather than using table2array. What type does this have?
Also, please don't edit comments to ask new questions, it makes it less likely that people will notice and be able to answer, and also makes the conversation harder to follow for people that have similar issues
FW
FW on 25 Jan 2020 at 16:21
Sorry, I don't think it is working.
I found this from another source:
opts = detectImportOptions('A.xlsx','Sheet','Sheet1','Range','A30:C10000'); %still have to specify the full range
opts.SelectedVariableNames = opts.SelectedVariableNames([1, 3]); %ignore second column
Table_1 = table2array(readtable('A.xlsx', opts));
The exported Table is now an array. You may wish to edit the answer.

Sign in to comment.

Sign in to answer this question.

Products


Release

R2019a

Translated by