How do I simplify importing .xls files within a for loop?

1 回表示 (過去 30 日間)
Clifford Shelton
Clifford Shelton 2012 年 12 月 13 日
Thanks for any assistance in advance! I have the following problem: I have generated spreadsheets of data (.xls file for each baseball team).
I want to import one xls file, do some calculations, and then move on to the next team's xls file...so on and so on..
However, the way I designed my for loop, a window pops up where I have to manually select each individual .xls file I wish to be imported.
I would like to know: how can i automate this process? What code do I need so that the program itself will know exactly which xls file to import within the for loop without me needed to manually select it each time?.
Here is my code:
for Str = {'Diamondbacks' 'Braves' 'Orioles' 'Boston' 'Cubs' 'WhiteSox' 'Reds' 'Indians' 'Rockies' 'Tigers' 'Astros' 'Royals' 'Angels' 'Dodgers' 'Marlins' 'Brewers' 'Twins' 'Mets' 'Yankees' 'Athletics' 'Phillies' 'Pirates' 'Padres' 'Giants' 'Mariners' 'Cardinals' 'Rays' 'Rangers' 'BlueJays' 'Nationals'};
[fileToRead1, folder] = uigetfile();
AngelsData.xls = fullfile(folder, fileToRead1);
% Call the first function.
importhome(AngelsData.xls)
%IMPORTFILE(FILETOREAD1)
% Imports data from the specified file
% FILETOREAD1: file to read
% Auto-generated by MATLAB on 05-May-2012 23:12:52
% Import the file
sheetName='Sheet1';
[numbers, strings, raw] = xlsread(fileToRead1, sheetName);
if ~isempty(numbers)
newData1.data = numbers;
end
if ~isempty(strings) && ~isempty(numbers)
[strRows, strCols] = size(strings);
[numRows, numCols] = size(numbers);
likelyRow = size(raw,1) - numRows;
% Break the data up into a new structure with one field per column.
if strCols == numCols && likelyRow > 0 && strRows >= likelyRow
newData1.colheaders = strings(likelyRow, :);
end
end
  2 件のコメント
Walter Roberson
Walter Roberson 2012 年 12 月 13 日
What pattern (if any) is there in the names of the files?
Clifford Shelton
Clifford Shelton 2012 年 12 月 13 日
the pattern is this: "teamname".xls For example: Braves.xls Angels.xls Tigers.xls so on and so forth.

サインインしてコメントする。

採用された回答

Walter Roberson
Walter Roberson 2012 年 12 月 13 日
Replace
[fileToRead1, folder] = uigetfile();
with
folder = '';
fileToRead1 = [Str '.xls'];
Note: I would suggest that "AngelsData.xls" is a confusing name for a variable. It looks too much like a file name. It is a valid variable name, though, meaning "the field named 'xls' in the structure named 'AngelsData'"
  3 件のコメント
Walter Roberson
Walter Roberson 2012 年 12 月 13 日
I didn't say to remove the line
AngelsData.xls = fullfile(folder, fileToRead1);
Not that it is needed, really. What should be done is to remove it and to use
importhome(filetoRead1);
Clifford Shelton
Clifford Shelton 2012 年 12 月 13 日
I tried that and still got this error:
??? Error using ==> xlsread at 122 Filename must be a string.
Error in ==> importhome at 10 [numbers, strings, raw] = xlsread(fileToRead1, sheetName);
Error in ==> baseball2 at 9 importhome(fileToRead1);
Stil stumped :-(

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeGeology についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by