Matlab can't find files using xlsread

조회 수: 24 (최근 30일)
Allen
Allen 2014년 6월 27일
편집: John Lutz 2017년 6월 12일
Hi,
I'm using a MATLAB script to compile a massive amount of .csv files into one. The script works fine and has run successfully before, but I am having major problems with xlsread returning error messages similar to the following. (I replaced the foldername and filename because they are a little long and also contain some sensitive info)
XLSREAD unable to open file
'C:\Output\foldername\filename.csv'
File
'C:\Output\foldername\filename.csv'
not found.
I have tried adding the folder to the MATLAB path, but afterward I still get this message and also get error messages using excel with a similar file not found. I was wondering if it was a MATLAB problem or another issue.
Using the exist function before returns a nonzero number, but after adding to the path returns 0. Additionally, moving the files to a different directory for some reason allows excel to open the files, but still not matlab.
I am running MATLAB R2014a on a Windows XP Profesional Version 2002 Service Pack 3 using Excel 2010.
EDIT: It turns out there is actually a maximum allowable pathlength in windows, which is around 260. I found 220, but that just might be my version or system.
  댓글 수: 3
Image Analyst
Image Analyst 2014년 7월 12일
Excel has a path length limit of 218 characters: http://support.microsoft.com/kb/213983
John Lutz
John Lutz 2017년 6월 12일
편집: John Lutz 2017년 6월 12일
Just ran into this issue and resolved it in a very strange way. Moved the .m script file and the excel spread sheet to a different directory and tried to run the script. matlab said something about path and i added the path. then i added both files back to the original directory and added the path again and it worked.

댓글을 달려면 로그인하십시오.

채택된 답변

Image Analyst
Image Analyst 2014년 6월 27일
Excel has nothing to do with it. If exist() says the file is not there, then nothing (including Excel) will be able to find it either. Can't really say much more unless more specifics are given.
You certainly don't want to use Excel anyway to read in "massive" numbers of csv files and combine them into one. It will have to launch and shutdown Excel each time and that will take forever . Your best bet is to simply open them up as text files with fopen() and get lines with fgetl() and transfer them to the single output file with fprintf(). Finally close the files with fclose().
  댓글 수: 3
Joseph Cheng
Joseph Cheng 2014년 6월 27일
편집: Joseph Cheng 2014년 6월 27일
It maybe how you're calling the file. To make things very simple. create a very simple folder directory like 'C:\temp' and place one of the csv files there. then using I.A's suggestion try opening it with fopen(). if it works then there is something in how you're defining where that file is.
example:
fid = fopen('C:\temp\randomfile.csv')
testline = fgetl(fid)
fclose(fid);
or use uigetfile to navigate and get the path of the file.
[filename pathname]=uigetfile('*.csv','Pick CSV file')
fid = fopen([pathname filename])
testline = fgetl(fid)
fclose(fid);
Allen
Allen 2014년 6월 27일
Hi Joseph, Thank you! I have actually tried doing that, but with no luck on opening the file either.
I think the issue is actually the length of the file name, most likely with excel, not with matlab. I have tested this by changing the file name, with the same directory and everything else to under 220 characters (Including the full path). It's a working theory, and might not be true, but it seems to have worked.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Data Import from MATLAB에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by