2012-04-12 19 views
2

このコードは、与えられたrgbでJ1セルの色を付ける必要があります。Matlab:色のセルがExcelで色付けされたときに奇妙なファイルが作成されました

row_number_excel = 1; 
representative_red = 205; 
representative_green = 211; 
representative_blue = 201; 
headers = {'J'}; 
rgb = [representative_red representative_green representative_blue]; %# if you have 0 to 1 values  multiply by 255 and round 
clr = rgb * [1 256 256^2]'; %# convert to long number Excel understands 
pwd = 'D:\grapes\main'; 
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:row_number_excel 
    str = num2str(row_number_excel); 
    esh.Range(strcat(headers{1},str)).Interior.Color = clr; 
end 
ewb.Save 
ewb.Close(false) 
e.Quit 

このコードを実行しようとしましたが、セルは指定されたrgbとは異なる色で塗りつぶされました。 2回目にコードを実行すると、ディレクトリに「2E60F720」という名前のファイルが作成されました。そのタイプは 'file'です。その後、プログラムが実行され、実行され、タスクマネージャーが「EXCEL.EXE」を停止するまで停止しませんでした。 MATLABは私にこのことを書いた後:

"??? Error: The remote procedure call failed. 
Error in ==> test1 at 212 ewb. 
Close(false);" 

を誰かが私を助けてくださいことができますか? 私は画面をキャプチャしました。左側では、プログラムはまだ実行されています、右側では、これは私のディレクトリです。私は作成されたファイルに印をつけました。 enter image description here ありがとうございます!私の質問を解決し

解決策は以下のとおりです。@yukする

row_number_excel = 1; 
representative_red = 205; 
representative_green = 211; 
representative_blue = 201; 
headers = {'J'}; 
rgb = [representative_red representative_green representative_blue]; %# if you have 0 to 1 values   multiply by 255 and round 
clr = rgb * [1 256 256^2]'; %# convert to long number Excel understands 
pwd = 'D:\grapes\main'; 
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:row_number_excel 
    str = num2str(row_number_excel); 
    esh.Range(strcat(headers{1},str)).Interior.Color = clr; 
end 
xlWorkbookDefault = 51; %# it's the Excel constant, not sure how to pass it other way 
ewb.SaveAs(fullfile(pwd,'example2'), xlWorkbookDefault) 
ewb.Close(false) 
e.Quit 

感謝!

+1

可能重複[Matlabの奇妙なファイルが作成されたときにExcelでIカラーセル](http://stackoverflow.com/questions/10125937/matlab-strange-file-was-:最後の行としてこれを置きます – Jonas

+2

@Jonas:リンクが死んでいます... – Lucas

+1

@ルーカス:他の質問が削除されたためです。 – Jonas

答えて

2

トラブルラインはファイルをewb.Saveで保存しています。

ファイルは実際には古い形式(Excel 2003)で、実際のRGBカラーをサポートしているかどうかはわかりませんが、その理由が考えられます。

ファイルを新しい名前と最新の形式で保存することをおすすめします。

xlWorkbookDefault = 51; %# it's the Excel constant, not sure how to pass it other way 
ewb.SaveAs(fullfile(pwd,'example2'), xlWorkbookDefault) 
ewb.Close(false) 
e.Quit 
+0

wowwww !!!!できます!!!あなたは王様です! –

+0

良い!元の質問を忘れないでください。 – yuk

+0

元の質問を更新しました。それは良いです? –

関連する問題