エクセルシートの文字色を調べる
65 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Mamoru Mabuchi
el 28 de Feb. de 2022
Comentada: Atsushi Ueno
el 28 de Feb. de 2022
MATLABから、Excelのセルを指定(例えばセルA1)して、文字色を調べたいです。
戻り値は、RGB成分(例えば[0 0 1])が理想です。
どのようにすればよろしいでしょうか
0 comentarios
Respuesta aceptada
Kojiro Saito
el 28 de Feb. de 2022
Editada: Kojiro Saito
el 28 de Feb. de 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 comentarios
Más respuestas (1)
Atsushi Ueno
el 28 de Feb. de 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 comentario
Atsushi Ueno
el 28 de Feb. de 2022
Ver también
Categorías
Más información sobre スプレッドシート en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!