xlswrite许多单元格arrays到Excel作为单独的命名表

我有很多单元格arrays

set1 = {'year' 'date' 'day' 'time'; '2017' '0803' 'Monday' '15.15'; '2015' '0303' 'Tuesday' '08.20'} set2 = {'year' 'date' 'day' 'time'; '2016' '0705' 'Friday' '17.15'; '2013' '0310' 'Monday' '18.20'} title = {'dataset1' 'dataset2'} 

我有更长的单元arrays(400-1000行),我有大约20个不同的集合,但数量的变化取决于我的GUI数据。 我想要做的就是将所有这些数组自动导出到一个Excel电子表格中,每个电子表格作为一个单独的表格,在“title”string中指定表格名称。

到目前为止,我正在使用

 [FileNameBodeWrite, PathNameBodeWrite] = uiputfile({'*.xls'},'Save As...', ... [Title{1,1} '.xls']); xlswrite([PathNameBodeWrite FileNameBodeWrite ],[Set1],1,'A1') 

但是,这当然只适用于一个特定的集合。 我想包括他们全部在一个电子表格,可能通过使用循环,但我不知道如何实现呢?

您可以创build您的集合的单元格数组

 sets = {set1, set2} % and so on 

然后简单地循环遍历集合。 使用xlswrite会看起来像这样

 [FileNameBodeWrite,PathNameBodeWrite] = uiputfile({'*.xls'},'Save As', [Title{1,1} '.xls']); for ii = 1:numel(sets) % If the sheet title{ii} doesn't exist, it will be created xlswrite([PathNameBodeWrite FileNameBodeWrite],sets{ii},title{ii},'A1'); end 

编辑

分配sets = {set1, set2}等是复制内存中的所有数据。 引用集合的更有效方法是使用匿名函数句柄。 本质上,我们指向单元格数组,而不是将副本存储在另一个单元格数组中:

 % Using the @ notation to define anonymous functions sets = {@()set1, @()set2}; for ii = 1:numel(sets) % Note the brackets after sets{ii}(), this calls the function handle in sets{ii} xlswrite([PathNameBodeWrite FileNameBodeWrite],sets{ii}(),title{ii},'A1'); end 

即使这个小例子也可以看出差异

 sets = {set1, set2}; whos sets >> Name Size Bytes sets 1x2 3126 sets = {@()set1, @()set2}; whos sets >> Name Size Bytes sets 1x2 288 

请注意,虽然上面的工作,它会很慢,因为你每次使用xlswrite打开和closures文件。 更快的方法是直接访问Excel对象。 当你xlswrite1这个时,我可能只是坚持什么工作,但如果你想优化的东西,那么文件交换functionxlswrite1使它相对容易。