エクセルシートの文字色を調べる
61 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Mamoru Mabuchi
le 28 Fév 2022
Commenté : Atsushi Ueno
le 28 Fév 2022
MATLABから、Excelのセルを指定(例えばセルA1)して、文字色を調べたいです。
戻り値は、RGB成分(例えば[0 0 1])が理想です。
どのようにすればよろしいでしょうか
0 commentaires
Réponse acceptée
Kojiro Saito
le 28 Fév 2022
Modifié(e) : Kojiro Saito
le 28 Fév 2022
こちらの回答が参考になります。
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 commentaires
Plus de réponses (1)
Atsushi Ueno
le 28 Fév 2022
【類似の質問】
- 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 commentaire
Atsushi Ueno
le 28 Fév 2022
Voir également
Catégories
En savoir plus sur スプレッドシート dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!