我在excel文件中有一些数据。
首先,我通过以下命令读取文件并创建存储在单元格中的名称列表:
[status,sheets] = xlsfinfo(filename);
我得到了:
sheets = {'A1','A2','B1','B2','C1'};
(这些是excel文件中excelsheets的名称)
通过一些过程,我获得了每个名称的矩阵(excelsheets)。每个的最终矩阵称为:
completeData = [x,v,z,y,s];
现在,我想:
将“completeData”变量的名称更改为每个相应的excelsheet(来自“sheet”单元格)。
然后将这个新重命名的变量(旧的“completeData”)与其相应的excelsheet的名称一起保存(再次从“sheet”单元格)。
到目前为止,我只是通过这个命令设法保存每个excel表单的每个completeData矩阵和表单的名称[点号2]:
save(sprintf('%s',sheets{excelSheet}),'completeData');
(这里我有一个循环“excelsheet”)
问题在于,当我有macel excel表,并将所有这些保存在我的硬盘文件夹中时,每当我运行任何这些保存的变量时,我在工作区中得到“completeData”,这不是我想要的。我想得到excelsheet的名称。
我该怎么做?
P.S。通过这个命令:
eval(sprintf([sheets{excelsheet} '=completeData;']));
(excelsheet上的另一个循环)
我设法创建了几个带有excel表名称的矩阵。但我不知道如何通过循环保存这些非常好的新创建的变量,这样我就不会一个接一个地保存。
答案 0 :(得分:1)
按照上面的评论,我试着写一个简化的例子:
%% Initialise
names = {'name1', 'name2', 'name3'};
data = randn(10, 3);
%% it create three fields called name1, name2 and name3 from data, in s
for ind=1:size(data, 2)
s.(names{ind}) = data(:, ind);
end
希望它有所帮助!
答案 1 :(得分:0)
这就是它的工作原理:
首先阅读信息:
[status,sheets] = xlsfinfo(filename);
NamesList = sheets(:,1);
现在,应用主要收集的信息再次阅读详细信息:
for ind = 1:length(NamesList)
% Only read those particular sheets
[num,txt,raw] = xlsread(filename,NamesList{ind,:});
var.(NamesList{ind})={txt(:,MyColumn),num};
clear num txt raw
end