使用 MATLAB 创建 Excel Table

Creating an Excel Table with MATLAB

由于将不同大小的数据范围写入 sheet 似乎删除了 Excel Table 如果数据范围大于现有的 Excel 表范围,我每次我 运行 代码时都想在 Excel 中创建一个 Table。我目前在创建表格时遇到了一些困难。我现在尝试创建 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;

如有任何评论或建议,我们将不胜感激

我不知道如何在 matlab 中使用 eSheet,但具有以下功能

xlswrite(filename,A,sheet,xlRange) 

您还可以将矩阵中的数据写入 excel table http://de.mathworks.com/help/matlab/ref/xlswrite.html 并使用

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

您还可以检查 table sheet 是否已经存在,这样您就不会覆盖旧的并创建一个新的,如 https://de.mathworks.com/matlabcentral/answers/25848-how-to-check-existence-of-worksheet-in-excel-file

所示

我不确定这是否是您要找的东西

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