使用MATLAB创建Excel表

时间:2016-08-12 20:54:58

标签: excel matlab com activex listobject

由于如果数据范围大于现有的Excel表格范围,将不同大小的数据范围写入工作表似乎会删除Excel表格,我想在每次运行代码时在Excel中创建表格。我目前在创建表格方面遇到了一些困难。我现在有的代码尝试创建ListObject:

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 个答案:

答案 0 :(得分:1)

好吧,因为帖子被低估了(不知道为什么......)我在一些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;