使用 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;
由于将不同大小的数据范围写入 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;