2017-04-03 9 views
0

폴더의 여러 엑셀 파일에서 테이블을 읽는 루프가 있습니다. 그러나 나는 다음과 같은 오류 얻을 :

Unable to open file 'C:\MATLAB\Data\fish\~$volume022017.xlsx' as a workbook. Check that 
the file exists, read access is available, and the file is a valid 
spreadsheet file. 

I suspect that this is a temporary file (which I am unable to see in explorer). The list of files is created using 'dir':

filesData = [dir([folder,'\*.xlsx']);dir([folder,'\*.xls'])]; 
filenames = {filesData.name}'; 

'파일 이름'이 파일을 나열하지 않습니다.

나는 그 오류를 제공

tmpTable=readtable([folder, filenames{i}],'sheet',Tabs{term},'ReadRowNames',true); 

를 사용합니다.

+0

합니다. 디버깅 해 보셨습니까? 오류가 발생하는 동안'i'의 값을 확인한 다음,'filenames' 안에있는이 셀 번호의 파일을 확인하십시오. – Adiel

+0

파일 이름을 검사했는데 이전 루프가 열리고 닫혔다 고 생각됩니다. 나는 그것을 자연스럽게 제거 할 수있는 시간을 줄 수있는 두 번째 루프에서 멈춤을 만들었으며 이것이 문제를 해결하지만 약간의 원유 솔루션입니다. – Mary

+0

처음에'dir'을 호출하면 파일을 열거 나 닫음으로써 그 파일의 이름이 영향을 받아서는 안됩니다. Matlab은'filesData'로 읽어 들인 파일들만 열려고 시도한다 – Adiel

답변

0

당신은 $를 포함하지 않는 사람에게 파일 이름을 필터링 할 수 있습니다 매우 이상한

filesData = [dir([folder,'\*.xlsx']);dir([folder,'\*.xls'])]; 
    filenames = {filesData.name}'; 

    filenames2 = filenames(~contains(filenames,'$'))