2012-03-29 146 views
0

如何从matlab中向Excel工作簿添加更多工作表?如何在MATLAB中向excel工作簿添加超过3张工作簿

我建立像这样(基于代码我从别人的帖子在这个论坛了)工作簿:

%# create Excel COM Server 
    Excel = actxserver('Excel.Application'); 
    Excel.Visible = true; 
    %# create new XLS file 
    wb = Excel.Workbooks.Add(); 
    wsheet=1; 
    wb.Sheets.Item(wsheet).Activate(); 

这很好。再后来环路我这么多圈后,打开一个新的表内:

... 
    if loop==sheetlimit, 
     wsheet=wsheet+1; 
     wb.Sheets.Item(wsheet).Activate(); 
    end 

这个工作到纸张3但当wsheet = 4我收到此错误信息:

??? Invoke Error, Dispatch Exception: Invalid index. 

    Error in ==> filename at 97 
     wb.Sheets.Item(wsheet).Activate(); 

任何欣赏帮帮我。谢谢。

回答

3

我不知道Matlab,但如果wb.Sheets.Item(wsheet).Activate();实际上是添加任何新的工作表,我会感到惊讶。最有可能的是选择/激活您的wb工作簿中的每个工作表,并且您的默认Excel模板有三个工作表。因此,当它达到三个以上时,它为什么会出现错误。

像这样的事情可能添加一个新的Excel工作表:

wb.sheets.Add(); 
+0

是的,这会工作。你可以用这种方式来使用一个接口的可用方法; '方法(wb.sheets)',它给出:'接口类的方法.000208D7_0000_0000_C000_000000000046:添加FillAcrossSheets PrintOut addproperty事件loadobj set复制项目PrintPreview删除获取发布删除移动选择deleteproperty invoke saveobj' – Max 2012-03-29 08:42:02

1

AARGH - 注释格式完全搞砸了 - 我会重新进入它作为一个新的答案

wb.sheets.Add();将工作。您可以查询接口可用的方法是这样的:

methods(wb.sheets)

这给:

Methods for class Interface.000208D7_0000_0000_C000_000000000046: 

Add FillAcrossSheets PrintOut addproperty events loadobj set 
Copy Item PrintPreview delete get release 
Delete Move Select deleteproperty invoke saveobj