Вызов и извлечение имени листа Excel с использованием индекса листа в MATLAB

Мы можем вызвать лист, используя его имя или индекс: xlsread функционировать так:

    for i=1:100
      file = xlsread(`filename.xlsx`,i)
      %% I want get name of the called sheet here (storing in cell array)
    end

В этом цикле, если хотите, вызовите и извлеките указанное имя листа (используя индекс листа), как мы можем видеть в строке комментария вышеупомянутого цикла, и сохраните имена в массиве ячеек. Как я могу сделать это в MATLAB R2015a?

1 ответ

Решение

Увидеть xlsfinfo, который имеет необязательный sheets вывод, который возвращает массив ячеек с именами листов. Например:

xlswrite('test.xlsx', 1:3, 'hi');
xlswrite('test.xlsx', 1:3, 'hello');
xlswrite('test.xlsx', 1:3, 'hey');

[~, sheets] = xlsfinfo('text.xlsx');

Возвращает:

sheets = 

    'Sheet1'    'hi'    'hello'    'hey'

Обратите внимание, что Sheet1 присутствует только потому, что я создал пустую электронную таблицу. Если имя листа указано в xlswrite Вызов отсутствует в целевом листе, он добавляется в конец рабочей книги.

РЕДАКТИРОВАТЬ: ActiveX реализация:

eAX = actxserver('Excel.Application');
mywb = eAX.Workbooks.Open('C:\test.xlsx');
mysheets = eAX.sheets;
numsheets = mysheets.Count;

sheets = cell(1, numsheets);
for ii = 1:numsheets
    sheets{ii} = eAX.Worksheets.Item(ii).Name;
end

mywb.Close(false)
eAX.Quit
Другие вопросы по тегам