C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: エクセルのフォントスタイルの取得


(過去ログ 124 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■74003 / inTopicNo.1)  エクセルのフォントスタイルの取得
  
□投稿者/ むぅ (1回)-(2014/11/20(Thu) 22:02:54)

分類:[C#] 

2014/11/20(Thu) 22:03:48 編集(投稿者)

VC# 2010 Win7 32bit
Office2007

お世話になります。
エクセルファイルのセルのフォントに対して斜体や取り消し線が設定されているかを取得したいです。

設定するときは以下のようにできました。
Excel.Worksheet xlSheet = (Excel.Worksheet)m_xlBook.Sheets["Ais"];
xlSheet.Range[xlSheet.Cells[nRow, 1], xlSheet.Cells[nRow, 1]].Font.Italic=true;

取得するとき、以下ではコンパイルエラーになります。
if(xlSheet.Range[xlSheet.Cells[nRow, 1], xlSheet.Cells[nRow, 1]].Font.Italic) == true)

どのような構文で書けばよろしいでしょうか。

ご教示の程、よろしくお願いします。


引用返信 編集キー/
■74004 / inTopicNo.2)  Re[1]: エクセルのフォントスタイルの取得
□投稿者/ 魔界の仮面弁士 (177回)-(2014/11/20(Thu) 22:42:03)
No74003 (むぅ さん) に返信
> エクセルファイルのセルのフォントに対して斜体や取り消し線が設定されているかを取得したいです。

文字単位の判定ではなく、セル全体に対しての判定ですね?


> 設定するときは以下のようにできました。
そのコードのままだと、Marshal.ReleaseComObject による COM 解放の問題が
生じることになりますが、今回はあくまでも説明のために
端折って記述しているだけですよね?


> 取得するとき、以下ではコンパイルエラーになります。
> if(xlSheet.Range[xlSheet.Cells[nRow, 1], xlSheet.Cells[nRow, 1]].Font.Italic) == true)

左括弧「(」が1個で、右括弧「)」が2個では対象性が無いからでは?
括弧の数を合わせましょう。

それと、.Font.Italic プロパティの戻り値は bool 型では無いはずです。
設定によって型は変わりますが、おそらくは「object」か「dynamic」だと思います。

dynamic になっているのであれば、true との比較も行える(実行時に型が判定される)と
思いますが、もしも object になっているのであれば、比較前に bool にキャストしてみてください。
引用返信 編集キー/
■74010 / inTopicNo.3)  Re[2]: エクセルのフォントスタイルの取得
□投稿者/ むぅ (2回)-(2014/11/21(Fri) 15:52:34)
2014/11/21(Fri) 15:52:47 編集(投稿者)

魔界の仮面弁士様
早速のご回答、ありがとうございました。
キャストすることで正常に判断できるようになりました。

                      以上
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -