Как добавить более 3 листов в книгу Excel из MATLAB - PullRequest
0 голосов
/ 29 марта 2012

Как добавить дополнительные листы в книгу Excel из Matlab?

Я настроил книгу следующим образом (основываясь на коде, который я получил из чужого поста на этом форуме):

    %# 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();

Ценю любую помощь.Спасибо.

Ответы [ 2 ]

3 голосов
/ 29 марта 2012

Я не знаю Matlab, но я был бы удивлен, если бы wb.Sheets.Item(wsheet).Activate(); фактически добавлял какие-либо новые рабочие листы. Скорее всего, это выбор / активация каждого рабочего листа в вашей рабочей книге wb, а ваш шаблон Excel по умолчанию содержит три рабочих листа. Следовательно, почему это ошибки, когда он достигает более трех.

Примерно так может добавить новый лист Excel:

wb.sheets.Add();
1 голос
/ 29 марта 2012

Ааааа - форматирование комментариев полностью испорчено - я снова введу его как новый ответ

Да 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
...