Changing names of excl files automatically and converting into cell array

3 views (last 30 days)
I have a project where i must rename excel files automatically and then place each file into a cell array. i cannoyt seem to figure it out. the code i am using to try and rename the fie is not working. Here it is:
files = dir('*.xlsx');
% Loop through each
for id = 1:length(files)
% Get the file name (minus the extension)
[~, f] = fileparts(files(id).name);
% Convert to number
num = str2double(f);
if isnan(num)
% If numeric, rename
movefile(files(id).name, sprintf('%03d.xlsx', id));
  1 Comment
Stephen23 on 19 Feb 2024
The order of the renamed files might not be what you expect:
S = dir('*.txt'); % note the order!
ans = '1.txt'
ans = '10.txt'
ans = '2.txt'

Sign in to comment.

Accepted Answer

Dyuman Joshi
Dyuman Joshi on 19 Feb 2024
If you want to rename the file when the file name is a number only, then the condition should be -
if ~isnan(num)
NeedHelp55 on 19 Feb 2024
I would like to rename all files, regardless of filename content. Thank you for your help
Stephen23 on 19 Feb 2024
Edited: Stephen23 on 19 Feb 2024
"i would like to rename each file to 1 through 11 to make it easier for taking in the data to the cell array."
Renaming the files won't make that easier. Here is an alternative:
P = 'D:/foo/bar'; % absolute or relative path to the parent directory
S = dir(fullfile(P,'Non*BP*','*S*','*Subject*ECG.xlsx'));
for k = 1:numel(S)
F = fullfile(S(k).folder,S(k).name);
T = readtable(F); % or some other suitable file importing function
S(k).data = T;
All of the imported data is stored in the structure S. For example, the 2nd file:
S(2).folder % filepath
S(2).name % filename
S(2).data % imported file data
If you really need the imported data in a cell array then you can simply do this:
C = {};
I recommend using the structure.

Sign in to comment.

More Answers (0)




Community Treasure Hunt

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

Start Hunting!