2

このコードは、指定されたrgbによってJ1セルに色を付ける必要があります。

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」という名前のファイルが作成されました。そのタイプは「ファイル」です。その後、プログラムが実行され、実行され、タスクマネージャーによって「EXCEL.EXE」を停止するまで停止されませんでした。その後、MATLABは私にこれを書きました:

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

誰かが私を助けてくれますか?画面をキャプチャしました。左側では、プログラムはまだ実行中です。右側では、これが私のディレクトリです。作成したファイルにマークを付けました。 ここに画像の説明を入力してください ありがとう!

私の質問を解決した解決策は次のとおりです。

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

@yukに感謝します!

4

1 に答える 1

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
于 2012-04-12T16:58:48.853 に答える