How to import numerous excel files into MATLAB?

A have several excel files that I need to modify through MatLab and export into a different folder. I need help with importing and exporting an entire folder of excel files.
Thanks,
-Frank
source_dir = 'C:\Users\xuf\Desktop\Excel Saved PointScans'
dest_dir = 'C:\Users\xuf\Desktop\Test Folder'
source_files = dir(fullfile(source_dir, '*.xls'));
for i = 1:length(source_files)
data = xlsread(fullfile(source_dir,source_files(i).name));
xlswrite(fullfile(dest_dir,source_files(i).name));
end

 Accepted Answer

You won't be able to load them all at once but you could easily use a for-loop to process them one at a time. Something like this:
source_dir = 'path/to/source/'
dest_dir = '/path/to/dest'
source_files = dir(fullfile(source_dir, '*.xls'));
for i = 1:length(source_files)
data = xlsread(fullfile(source_dir, source_files(i).name)));
#do something with data
xlswrite(fullfile(dest_dir, source_files(i).name)));
end

14 Comments

Hi
Would I have to individually input the name of the file where the Astrix is on the 3rd line?
Thanks,
-Frank
No. That argument to the dir function tells it to return all files ("all" symbolized by the *) with extension .xls. Perhaps it would be helpful to read the documentation for dir by typing:
doc dir
at the command line.
Hi
Okay, however, I still have trouble setting up the script. I've tried the code above from Will, however, I get no output in the destination folder.
-Frank
Edit your original post adding the code formatted with the "{} code" button.
Hi
I basically only have the code above, (I'm not very good at matlab).
-Frank
Did you substitute 'path/to/source' and 'path/to/dest' with the paths of interest?
Did you get an error?
I'm getting:
???Error using ==>xlswrite at 151
Not enough input arguments
Error in ==> testing4 at 6
xlswrite(fullfile(dest_dir,source_files(i).name));
You can see the help for xlswrite by typing "doc xlswrite" at the command line. You would see that xlswrite takes two arguments: the file and the variable to be stored. So you should change that line to:
xlswrite(fullfile(dest_dir,source_files(i).name), data);
Hey!
That worked perfectly, thank you guys!
-Frank
Thanks: Oleg, Andy, and Will!
But this code just imported numeric data.
I want to import from numeric to txt data.
[num txt raw] = xlsread('') is just imported only 1 files.
What should I do?
You need to pass it a filename. You need to call it multiple times if you have multiple filenames.
can you give us an example on how to do it?
Thanks

Sign in to comment.

More Answers (2)

This has been a helpful thread for a project that I am working on. So thank you, Frank, for asking it and thank you to all that have responded.
I would like to add and ask is it possible to change the names of the output files from xlswrite, rather than the output file being the same name as the corresponding input file?
Arnaud, I was looking at the documentation for dir and I'm not sure that I saw how to generate a name for the list of output files or maybe I am overlooking the function to change the name. I am using MATLAB 7.8.0 (R2009a) for the record.
Have a look at the documentation and use dir to generate the list of file names in the folder.
HTH,
Arnaud

Asked:

on 10 May 2011

Commented:

on 22 Feb 2018

Community Treasure Hunt

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

Start Hunting!