エクセルシートの文字色を調べる
66 ビュー (過去 30 日間)
古いコメントを表示
MATLABから、Excelのセルを指定(例えばセルA1)して、文字色を調べたいです。
戻り値は、RGB成分(例えば[0 0 1])が理想です。
どのようにすればよろしいでしょうか
0 件のコメント
採用された回答
Kojiro Saito
2022 年 2 月 28 日
編集済み: Kojiro Saito
2022 年 2 月 28 日
こちらの回答が参考になります。
Windows OS限定のやり方になりますが、actxserverというCOMインタフェースを使う方法で実現できます。
注意点としては、actxserverで立ち上げたExcelだとカレントフォルダがMATLABと違っているため、Openするときにpwdを付けて現在のフォルダにあるExcelファイルを開くようにすることと、Range('A1').Font.Colorで取得できる色情報が赤だと255、緑だと65280、青だと16711680と10進法になっています。
以下の方法でA1のセルにある色情報を取ってこれます。mycolorの中に [0 0 1]のようにRGBが格納されます。
objExcel=actxserver('excel.application');
objExcelW=objExcel.Workbooks;
objExcelF=objExcelW.Open([pwd filesep 'Book1.xlsx']); % 現在のフォルダにあるBook1.xlsxを開く
objExcelS=objExcelF.ActiveSheet;
color = objExcelS.Range('A1').Font.Color; % 10進法での色表示 例:255(赤)、65280(緑)、16711680(青)
b = floor(color / (256*256));
g = floor((color-b*256*256) / 256);
r = color-b*256*256-g*256;
mycolor = [r g b] / 255;
% Excelファイルのクローズとactxserverの消去
objExcelF.Close;
objExcel.Quit;
objExcel.delete;
処理終了後にExcelファイルを閉じる処理CloseやExcelのプロセスを終了するやQuitなどを入れてください。
0 件のコメント
その他の回答 (1 件)
Atsushi Ueno
2022 年 2 月 28 日
【類似の質問】
- MATLAB から Excel Spreadsheet にセル背景色やフォント色を指定してデータを書くにはどうしたらよいですか? - (mathworks.com)
- How to set excel cell color to red from Matlab? - (mathworks.com)
上記リンク先の通りExcel の ActiveX 機能を使用することで実現できます。動作未確認ですがこれで動くと思います。
h = actxserver('excel.application');
wb = h.Workbooks.Open(fullfile(pwd,'Book1.xlsx'),0,false);
ran = h.Activesheet.get('Range','A1');
validatecolor(['#' dec2hex(ran.font.Color)])
wb.Close;
h.Quit;
h.delete;
1 件のコメント
Atsushi Ueno
2022 年 2 月 28 日
参考
カテゴリ
Help Center および File Exchange で スプレッドシート についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!