2016-08-12 22 views
-1

创建一个Excel表自写不同大小的数据范围的表似乎删除Excel表格,如果数据范围大于现有的Excel表格范围,我要在Excel每次运行时创建一个表码。我目前在创建表格时遇到了一些困难。我现在所拥有的代码,试图创建的ListObject:与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

我不知道在MATLAB但功能

xlswrite(filename,A,sheet,xlRange) 

使用eSheet您还可以将数据从矩阵写入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

看到我不知道如果这是你在找什么吼声

+0

eSheet是使用excel activex服务器对Excel表单对象的引用。以上是引用excel表的名称,而不是excel中表的名称。我使用表格作为动态范围进行计算并在Excel中进行处理。 – sclel016