-1

由于如果数据范围大于现有 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;

任何评论或建议将不胜感激

4

2 回答 2

1

Alright, since the post got downvoted (not sure why...) I found my own answer with the help of some VBA forums and MATLAB Newsgroup. Here's what the final code looks like for anyone else that has issues:

    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;
于 2016-08-16T19:00:24.030 回答
1

我不知道在 matlab 中使用 eSheet,但使用函数

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

我不确定这是否是您正在寻找的东西

于 2016-08-14T01:57:29.640 回答