2012-04-11 5 views
4

может кто-нибудь помочь мне, пожалуйста, покрасить клетку excel через rgb в matlab? Я хочу, чтобы 10-я ячейка была написана rgb.
Matlab paint a excel cell

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}]); 

спасибо большое:]

+0

Вы не можете сделать это через 'xlswrite', но вместо этого должны использовать ActiveX. См. Здесь: http://www.orient-lodge.com/node/3430 – Jonas

+0

@Jonas Привет, Йонас, я изменил свое сообщение, потому что у меня странная проблема. Я запускаю программу, и есть новый файл, который создается в моем каталоге, например: 2E60F720. почему он создан? и как я могу это исправить? Я обращаю внимание, что если я закрою «EXCEL.EXE» через диспетчер задач, программа остановится, и я получил следующее: «Ошибка: не удалось выполнить вызов удаленной процедуры. Ошибка в ==> test1 at 212 ewb.Close (false); " спасибо! –

+0

Является ли ячейка правильно окрашена в ваш файл Excel? В этом случае я предлагаю вам вернуть ваш вопрос к тому, что у вас было до этого, принять ответ @ yuk и открыть новый вопрос для вашей совершенно другой проблемы. – Jonas

ответ

4

Вы можете окрашивать клетки в существующий файл с процедурой, как это:

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 для красного.