reading multiple excel files
21 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Ahmed Khalifa
el 7 de Jun. de 2015
Comentada: Image Analyst
el 14 de Dic. de 2020
I have afolder with 150 excel file and I want to read all of them one after another and save them in last in another excel sheet
2 comentarios
Respuesta aceptada
Azzi Abdelmalek
el 7 de Jun. de 2015
folder='E:\fold1'
d=dir(folder)
e={d.name}
f=e(~cellfun(@isempty,regexp(e,'.+(?=\.xlsx)','match')))
for k=1:numel(f)-1
data{k,1}=xlsread(f{k})
end
M=cell2mat(data)
xlswrite('new_file',M)
Más respuestas (1)
Image Analyst
el 7 de Jun. de 2015
Don't use xlsread() for this unless you're prepared to wait a very long time. If you have Windows, you can use ActiveX and get this done in a few seconds. With xlsread(), each time you call it, it has to launch Excel, open your workbook, haul over the data (probably using ActiveX), and finally shut down Excel. With ActiveX, you launch Excel just once, and shut it down just once, so it will be about 150 times faster for 150 workbooks. I attach a demo on how to read and write Excel files with ActiveX. If I have more than 2 files, I never use xlsread or xlswrite - I use ActiveX. If I want more precise control over formatting (decimal places, alignment, coloring, borders, etc.) I use ActiveX, or use a template. It's not hard to learn so don't be afraid - it's just like any other object oriented programming you're used to.
8 comentarios
Brooke Beier
el 14 de Dic. de 2020
I got a similar warning dialog. Your version of xlswrite1.m may have "Excel=evalin('base','Excel');" by default, but the demo needs "Excel = evalin('caller', 'Excel');".
The difference between 'base' and 'caller' makes the demo run for me.
Image Analyst
el 14 de Dic. de 2020
The version I use has caller, not base. I'm attaching it.
Ver también
Categorías
Más información sobre Spreadsheets en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
