Bird
Raised Fist0
MATLABdata~5 mins

Excel file reading and writing in MATLAB

Choose your learning style10 modes available
Introduction

Excel files store data in tables that are easy to read and edit. Reading and writing Excel files lets you work with this data inside MATLAB.

You want to import data from a spreadsheet to analyze it in MATLAB.
You need to save your MATLAB results into an Excel file to share with others.
You want to update or add data to an existing Excel file from MATLAB.
Syntax
MATLAB
data = readtable('filename.xlsx');

writetable(data, 'filename.xlsx');

readtable reads Excel data into a table format in MATLAB.

writetable writes a MATLAB table back to an Excel file.

Examples
This reads the entire Excel file 'data.xlsx' into a table called data.
MATLAB
data = readtable('data.xlsx');
This writes the table data into a new Excel file named 'output.xlsx'.
MATLAB
writetable(data, 'output.xlsx');
This reads data from the sheet named 'Sheet2' in the Excel file.
MATLAB
data = readtable('data.xlsx', 'Sheet', 'Sheet2');
This writes the table data to the sheet named 'Results' in the Excel file.
MATLAB
writetable(data, 'output.xlsx', 'Sheet', 'Results');
Sample Program

This program creates a small table with names and scores, writes it to an Excel file named 'sample.xlsx', then reads the data back and displays it.

MATLAB
filename = 'sample.xlsx';

% Create sample data
Names = {'Anna'; 'Ben'; 'Cara'};
Scores = [85; 92; 78];
T = table(Names, Scores);

% Write data to Excel file
writetable(T, filename);

% Read data back from Excel file
readData = readtable(filename);

disp('Data read from Excel file:');
disp(readData);
OutputSuccess
Important Notes

Make sure the Excel file is not open in another program when writing to it, or MATLAB may give an error.

You can specify sheet names and ranges to read or write specific parts of the Excel file.

Tables are a convenient way to handle Excel data because they keep column names and data together.

Summary

Use readtable to load Excel data into MATLAB as a table.

Use writetable to save MATLAB tables back to Excel files.

You can specify sheets and ranges to control what part of the Excel file you read or write.

Practice

(1/5)
1. Which MATLAB function is used to read data from an Excel file into a table?
easy
A. csvread
B. xlswrite
C. readtable
D. load

Solution

  1. Step 1: Identify the function for reading Excel files

    MATLAB provides readtable to import Excel data as a table.
  2. Step 2: Differentiate from other functions

    xlswrite writes data, csvread reads CSV files, and load loads MAT files.
  3. Final Answer:

    readtable -> Option C
  4. Quick Check:

    Excel read function = readtable [OK]
Hint: Use readtable to import Excel data as tables quickly [OK]
Common Mistakes:
  • Confusing readtable with xlswrite
  • Using csvread for Excel files
  • Trying to use load for Excel data
2. Which of the following is the correct syntax to write a table T to an Excel file named data.xlsx?
easy
A. readtable('data.xlsx', T)
B. write(T, 'data.xlsx')
C. xlsread('data.xlsx', T)
D. writetable(T, 'data.xlsx')

Solution

  1. Step 1: Identify the correct function for writing tables

    The function writetable writes tables to Excel files.
  2. Step 2: Check the syntax

    The syntax is writetable(T, 'filename.xlsx'). Other options are either reading functions or incorrect.
  3. Final Answer:

    writetable(T, 'data.xlsx') -> Option D
  4. Quick Check:

    Write table syntax = writetable(T, filename) [OK]
Hint: Use writetable with table and filename to save Excel files [OK]
Common Mistakes:
  • Using write instead of writetable
  • Confusing xlsread with writing
  • Passing table as second argument to readtable
3. What will be the output of the following MATLAB code?
T = readtable('sales.xlsx', 'Sheet', 'Q1', 'Range', 'A1:C5');
disp(height(T));
medium
A. 4
B. 5
C. 3
D. 6

Solution

  1. Step 1: Understand the readtable range and header

    The range 'A1:C5' includes 5 rows, but the first row is usually the header.
  2. Step 2: Calculate the number of data rows

    Since the first row is header, the data rows are 5 - 1 = 4.
  3. Final Answer:

    4 -> Option A
  4. Quick Check:

    Rows read minus header = 4 [OK]
Hint: Remember first row is header, so data rows = total rows - 1 [OK]
Common Mistakes:
  • Counting header row as data
  • Confusing range size with number of rows
  • Assuming no header row present
4. Identify the error in this MATLAB code snippet that tries to write a table T to the second sheet of results.xlsx:
writetable(T, 'results.xlsx', 'Sheet', 2, 'Range', 'B2');
medium
A. The 'Sheet' parameter must be a string, not a number
B. The 'Range' parameter cannot be used with writetable
C. The filename must include full path
D. writetable cannot write to Excel files

Solution

  1. Step 1: Check the 'Sheet' parameter type

    In writetable, the 'Sheet' argument should be a string with sheet name, not a numeric index.
  2. Step 2: Validate other parameters

    'Range' is valid, filename can be relative, and writetable supports Excel files.
  3. Final Answer:

    The 'Sheet' parameter must be a string, not a number -> Option A
  4. Quick Check:

    Sheet name must be string in writetable [OK]
Hint: Use sheet names as strings, not numbers, in writetable [OK]
Common Mistakes:
  • Passing sheet number instead of name
  • Thinking Range is invalid for writetable
  • Assuming filename needs full path always
5. You want to read only the numeric data from the range B2:D10 in sheet Data of metrics.xlsx into MATLAB as a table. Which code snippet correctly does this and then writes only the first 5 rows back to a new Excel file subset.xlsx?
hard
A. T = readmatrix('metrics.xlsx', 'Sheet', 'Data', 'Range', 'B2:D10'); writetable(T(1:5,:), 'subset.xlsx');
B. T = readtable('metrics.xlsx', 'Sheet', 'Data', 'Range', 'B2:D10'); writetable(T(1:5,:), 'subset.xlsx');
C. T = readtable('metrics.xlsx', 'Sheet', 'Data', 'Range', 'B2:D10'); writetable(T(1:5));
D. T = readmatrix('metrics.xlsx', 'Sheet', 'Data', 'Range', 'B2:D10'); writetable(T, 'subset.xlsx');

Solution

  1. Step 1: Read numeric data as a table

    Use readtable with 'Sheet' and 'Range' to get data as a table.
  2. Step 2: Write first 5 rows to new Excel file

    Use writetable with T(1:5,:) to write first 5 rows correctly.
  3. Final Answer:

    T = readtable('metrics.xlsx', 'Sheet', 'Data', 'Range', 'B2:D10'); writetable(T(1:5,:), 'subset.xlsx'); -> Option B
  4. Quick Check:

    readtable + subset rows + writetable = T = readtable('metrics.xlsx', 'Sheet', 'Data', 'Range', 'B2:D10'); writetable(T(1:5,:), 'subset.xlsx'); [OK]
Hint: Use readtable with range, then slice rows before writetable [OK]
Common Mistakes:
  • Using readmatrix but then writetable on matrix
  • Omitting filename in writetable
  • Not slicing rows correctly before writing
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard