2016-08-12 5 views
-1

Поскольку запись диапазонов данных различного размера на лист, похоже, удаляет таблицу Excel, если диапазон данных больше, чем существующий диапазон таблиц Excel, я хочу создать таблицу в Excel каждый раз, когда я запускаю код. В настоящее время я испытываю трудности с созданием таблиц. Код я прямо сейчас, чтобы попытаться создать ListObject:Создание таблицы Excel с MATLAB

eSheets = e.ActiveWorkbook.Sheets; 
eSheet = eSheets.get('Item', j); 
eSheet.Activate;  
eSheet.Range(horzcat('A1:R',mat2str(size(obj,1)+1))).Select; 
eSheet.Listobjects.Add; 
eSheet.Listobjects.Item(1).TableStyle = 'TableStyleMedium2'; 
eSheet.ListObjects.Item(1).Name = tablename; 

Любые комментарии или предложения будут оценены

ответ

1

Хорошо, поскольку пост получил downvoted (не знаю, почему ...) Я нашел свой собственный ответ с помощью некоторых форумов VBA и MATLAB Newsgroup. Вот как выглядит последний код для кого-либо еще, у которого есть проблемы:

e = actxserver('Excel.Application'); 
    ewb = e.Workbooks.Open('Path/to/file'); 
    eSheets = e.ActiveWorkbook.Sheets; 
    eSheet = eSheets.get('Item', j); 
    eSheet.Activate; 
    range = horzcat('A1:R',mat2str(size(obj,1)+1)); 
    range_todelete = horzcat('A1:R',mat2str(size(obj,1)+300)); 
    Range1 = eSheet.get('Range',range_todelete); 
    Range1.Value=[]; 
    eSheet.Range(range).Select;   
    name = 'Table_Name';   
    try eSheet.ListObjects(name).Item(1).Delete 
    catch 
    end 
    eSheet.Listobjects.Add; 
    eSheet.ListObjects.Item(1).Name = name; 
    eSheet.ListObjects.Item(1).TableStyle = 'TableStyleMedium2'; 
    Range = eSheet.get('Range',range); 
    Range.Value = cellarray; 
1

Я не знаю об использовании eSheet в MATLAB, но с функцией

xlswrite(filename,A,sheet,xlRange) 

вы также можете записать свои данные из матрицы в таблицу excel http://de.mathworks.com/help/matlab/ref/xlswrite.html и с

[A,B] = xlsfinfo('foofoo.xlsx'); 
sheetValid = any(strcmp(B, 'foo2')); 

вы также можете проверить, если таблица лист уже существует, так что вы не переопределить старый и создать новый, как видно в https://de.mathworks.com/matlabcentral/answers/25848-how-to-check-existence-of-worksheet-in-excel-file

Я не уверен, если это то, что вы ищете thougth

+0

eSheet - это ссылка на объект листа excel с использованием сервера excel activex. Вышеуказанное относится к именам листов excel, а не к названиям таблиц в excel. Я использую таблицы как динамические диапазоны для вычислений и grapphing в Excel. – sclel016