使用MATLAB,我可以启动COM服务器并以编程方式写入Excel工作簿。但是,我无法找到一种方法来添加迷你图(建议相关):
% Open new workbook
excel = actxserver('excel.application');
excel.visible = 1;
wrkbook = excel.Workbooks.Add();
sheet = wrkbook.Sheets.Item(1);
% Write some data
sheet.Range('B1:Z1').Value = rand(1,25);
问题在于:
% Add column sparklines to 'A1', type 'xlSparkColumn' and DataSource: 'B1:Z1'
sheet.Range('A1').SparklineGroups.Add('xlSparkColumn','B1:Z1')
我收到以下错误:
Error using Interface.Microsoft_Excel_15.0_Object_Library.SparklineGroups/Add
Error: Object returned error code: 0x800A03EC
关闭/清理
% Close without saving
wrkbook.Saved = 1;
wrkbook.Close
excel.Quit
delete(excel)
参考SparklineGroup Object (Excel)。我在win7 64bit,R2013a和Excel 2013上。
答案 0 :(得分:2)
尝试:
xlSparkColumn = 2;
sheet.Range('A1').SparklineGroups.Add(xlSparkColumn,'B1:Z1')
将来,如果要计算某个常量/枚举的相应值,请使用IL DASM工具,如these posts所示。
好的,事实证明枚举xlSparkColumn
不是真正的问题,您可以将其指定为字符串参数或传递枚举的基础整数值。
您在评论中提到的问题是您设置了R1C1 reference style而不是默认的A1参考样式,因此您的调用中指定的范围无法以该格式生效。
其中任何一个都可行:
excel.ReferenceStyle = 'xlR1C1';
sheet.Range('A1').SparklineGroups.Add('xlSparkColumn','R1C2:R1C26')
excel.ReferenceStyle = 'xlA1';
sheet.Range('A2').SparklineGroups.Add('xlSparkColumn','B1:Z1')