this code is taking a lot of time to run,
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Prajwal Venkatesh
il 17 Gen 2020
Commentato: Prajwal Venkatesh
il 19 Gen 2020
Is there anyway i can write this code efficiently and reduce runtime? I am trying to import data from multiple files in a folder
clc;clear;
testfiledir = 'C:\Users\bidgu\OneDrive\Desktop\manpower';
matfiles = dir(fullfile(testfiledir, '*.xlsm'));
nfiles = length(matfiles);
datafi = cell(nfiles);
for i = 1 :nfiles
% fid = fopen( fullfile(testfiledir, matfiles(i).name) );
datafi{i} = readtable(fullfile(testfiledir, matfiles(i).name));
% fclose(fid);
end
6 Commenti
dpb
il 18 Gen 2020
"I need the data from all those files at a time and to do anaysis on it"
Then go back to the suggestion I made earlier -- and perhaps Walter's could possibly help some -- and read the files as data; put together and then make a table (or not; depending upon the analyses desired, the array form may be more efficient).
As noted also, it's not possible to help much w/o example of the file(s) and some more specific idea of what it is that is the end result desired (beyond reading them all). Attach sample file if expect anybody to be able to do anything other than simply pontificate.
Risposta accettata
J. Alex Lee
il 18 Gen 2020
If all the files have the same format, I have seen big improvements using detectImportOptions() on the first file re-use those options for all subsequent ones (expecially if the excel files are formatted oddly):
This is a cumbersome solution, but if you really need speed and will re-use a lot, may be worth it to interact directly with the Excel com server object, which in my experience is much faster to read and write data (at least within a single file).
0 Commenti
Più risposte (1)
Vedere anche
Categorie
Scopri di più su Spreadsheets in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!