エクセルシートの文字色を調べる
조회 수: 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!