我正在使用ActiveX服务器通过MATLAB修改Excel电子表格中的格式。我需要生成一个新的电子表格,我希望此表中的相同CustomView设置与之前在旧电子表格中设置的设置相同。在这里,我加载了较旧的电子表格,我可以查看通过Excel定义的CustomView数量。
e = actxserver ('Excel.Application'); % open Activex server
ewb = e.Workbooks.Open(fileName); % open file (enter full path!)
>> ewb.CustomViews.get
Application: [1x1 Interface.000208D5_0000_0000_C000_000000000046]
Creator: 'xlCreatorCode'
Parent: [1x1 Interface.000208DA_0000_0000_C000_000000000046]
Count: 3
这是我坚持的部分,因为我不知道如何将这些设置“转移”到另一张纸上。我找到了一些ActiveX documentation,但没有提到我如何能够存储这些设置并在另一个电子表格中使用它们。
我的想法是...... ...
myCustomViews = ewb.CustomViews;
save('myCustomViews.mat','myCustomViews');
%
%
% Clear all and close/quit instance of actxserver
%
%
e = actxserver('Excel.Application');
newEwb = e.Workbooks.Open(newFileName);
load myCustomViews.mat;
newEwb.CustomViews = myCustomViews;
但是我知道这不会起作用,因为(1)myCustomViews
似乎不包含任何有关视图的信息,例如哪些列/行被隐藏,缩放级别等等...(2) )保存后无法正确加载myCustomViews
对象。 (MATLAB表示它无法加载接口)