諸行ほぼ無常

22歳が独りごとを書く。

ClosedXMLによる.NETとExcelのチェックボックスのやりとり

 .NETで、ClosedXMLを使ってExcelチェックボックスの値を読み書きする方法のメモ。

 
VB.NETを勉強し始めてまだ1ヵ月も経っていない素人の記事なので、間違っているところも多々あるかもしれないがお許し願いたい。
 
サンプルとして、こんなプログラムを書いてみる。
・「Excel→Web」ボタンで、Excelチェックボックスの状態をWeb側に反映させる。
・「Web→Excel」ボタンで、Webのチェックボックスの状態をExcelに反映させる。
 
準備として、チェックボックスだけを配置したExcelファイルを作って、プロジェクトフォルダに置いておく。
 

f:id:kawadakawada:20170603093030j:plain

 
 
.NET側では、チェックボックスひとつとボタンふたつを置いたページを作る。
 

f:id:kawadakawada:20170603093842j:plain

 
この状態では、.NET側からチェックボックスの値にアクセスすることはできない。チェックボックスにそれぞれIDが振られているのだが、仕様上それを取得することはできないみたいだ。
 
チェックボックスの値にアクセスするには、Excel側で「リンクするセル」の設定を行う。
ctrl+クリックでチェックボックスを選択して右クリック→「コントロールの書式設定」→「コントロール」タブの「リンクするセル」で、適当なセルを選択する。
 
f:id:kawadakawada:20170603103732j:plain
 
こうしてからチェックボックスをクリックしてオン・オフすると、リンクしたセルの値がTRUE、FALSEと、連動して変化するようになる。逆に、セルの値をTRUE、またはFALSEに書き換えると、それに連動してチェックがついたり外れたりする。これを利用すれば、.NETからでもチェックボックスの状態を操作できる。
 

f:id:kawadakawada:20170603094946p:plain f:id:kawadakawada:20170603095023p:plain

 というわけで、ソースはこうなる。VB.NETで書いている。 

 
 Web側のチェックボックスのオンオフは、.Checkedプロパティで参照、操作できる。
基本的に3つめの文をひっくり返しただけだけど、ファイルに書き込む際には保存をしないと変更が反映されないので注意。
 
 
 
...初めてプログラミングについての記事を書いたけど、こんな感じでいいんだろうか。
誰かの役に立てばいいなあ。