Matlab 如何在 Excel 中填充单元格颜色?

4

请问有人能帮我在Matlab中通过RGB来填充Excel中的单元格吗? 我想让第10个单元格用RGB颜色填充。

values{1}(1,:) = {'1', '2', '3', '4', '5', '6', '7', '8', '9', '10'};
headers = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'};
xlswrite('example.xls', [headers; values{1}]);

非常感谢你:]

你不能通过 xlswrite 来实现这个,而必须使用 ActiveX。例如,可以参考这里:http://www.orient-lodge.com/node/3430 - Jonas
@Jonas 你好 Jonas,我改变了我的信息,因为我有一个奇怪的问题。 我运行程序,然后在我的目录中创建了一个新文件,例如:2E60F720。为什么会创建这个文件?我该如何解决它?我注意到,如果我通过任务管理器关闭“EXCEL.EXE”,程序就会停止,并出现以下错误:“??? 错误:远程过程调用失败。错误位于==> test1 at 212 ewb.Close(false);"谢谢! - Alon Shmiel
你的Excel文件中单元格的颜色是否正确?如果是这样,我建议您将问题恢复到之前的状态,接受@yuk的答案,并为您完全不同的问题开一个新的问题。 - Jonas
不,Excel文件中的颜色是不同的。我通过“画图”来检查真实的颜色(那里有一个选项)...我正在开一个新的问题。再次感谢:]] - Alon Shmiel
如果颜色不正确,您应该在@yuk的答案下添加评论,以便必要时可以修正答案。 - Jonas
1个回答

5
您可以使用以下类似的过程为现有文件中的单元格添加颜色:
values = {'1', '2', '3', '4', '5', '6', '7', '8', '9', '10'};
headers = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'};
rgb = [255 0 0]; %# if you have 0 to 1 values multiply by 255 and round
clr = rgb * [1 256 256^2]'; %'# convert to long number Excel understands

e = actxserver ('Excel.Application'); %# open Activex server
filename = fullfile(pwd,'example.xls'); %# full path required
if exist(filename,'file')
    ewb = e.Workbooks.Open(filename); %# open the file
else
    error('File does not exist.') %# or create a new file
end
esh = ewb.ActiveSheet;
for c = 1:numel(values)
    esh.Range(strcat(headers{c},values{c})).Interior.Color = clr;
end
ewb.Save
ewb.Close(false)
e.Quit

您可以使用十六进制值指定RGB颜色,并使用hex2dec函数。在这种情况下,顺序应该相反,例如对于红色应为0000FF

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接