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

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

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

ClosedXMLによるXLRichStringの色取得

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

■94018 / inTopicNo.1)  ClosedXMLによるXLRichStringの色取得
  
□投稿者/ angra (1回)-(2020/03/04(Wed) 14:37:41)

分類:[C#] 

言語:C#
開発環境:VisualStudio 2013
CloseXML:0.94.2.0


CloseXMLを使用し、下記方法にてExcelのセル情報を取得しています。
このセルは、セル内改行およびフォント違いを含んでいます。
IXLCell cell = sheet.Cell(row, column);

RichTextBoxにExcelと同等の画面を表示したいので、
cellから文字列、色、その他フォント情報を取得しようとしています。

しかし、RichTextのXLRichString.FontColorを見ると、
FontColor.ColorにてInvalidOperationの例外がでており、取得できません。

回避方法または代替方法をご存じでしょうか。
引用返信 編集キー/
■94020 / inTopicNo.2)  Re[1]: ClosedXMLによるXLRichStringの色取得
□投稿者/ Hongliang (970回)-(2020/03/04(Wed) 15:04:10)
色には大きく分けて2種類あって、一つは直接RGBを設定するもので、もう一つはテーマで設定された色+色の濃さで表現されるものです。
// あとインデックスで選ぶインデックスカラーというのもあるみたいですが。
Excelの操作で言うと「標準の色」とか色の設定ダイアログで選んだ色が前者。
「テーマの色」に含まれる色が後者になります。

これらはXLColorから取得する際も異なった方法で取得する必要があります。
RGB直接の色はColorプロパティから取得できます。
テーマ色の場合、ThemeColorプロパティ及びThemeTintプロパティからどうにかする必要があります。
用意されたメソッド呼ぶだけというのはなさそうなので、以下のページを参考にしてみればどうでしょうか。
https://github.com/ClosedXML/ClosedXML/issues/196
引用返信 編集キー/
■94021 / inTopicNo.3)  Re[2]: ClosedXMLによるXLRichStringの色取得
□投稿者/ angra (3回)-(2020/03/04(Wed) 16:32:37)
No94020 (Hongliang さん) に返信
> 色には大きく分けて2種類あって、一つは直接RGBを設定するもので、もう一つはテーマで設定された色+色の濃さで表現されるものです。
> // あとインデックスで選ぶインデックスカラーというのもあるみたいですが。
> Excelの操作で言うと「標準の色」とか色の設定ダイアログで選んだ色が前者。
> 「テーマの色」に含まれる色が後者になります。
>
> これらはXLColorから取得する際も異なった方法で取得する必要があります。
> RGB直接の色はColorプロパティから取得できます。
> テーマ色の場合、ThemeColorプロパティ及びThemeTintプロパティからどうにかする必要があります。
> 用意されたメソッド呼ぶだけというのはなさそうなので、以下のページを参考にしてみればどうでしょうか。
> https://github.com/ClosedXML/ClosedXML/issues/196

ありがとうございます。無事解決しました。
ただ、別のブックからセル内で色分けした文字列をコピペすると、Excel上では色は分かれていますが、
アプリからの読み出し情報ではどちらも同じテーマになっており、対応できなさそうでした。
Excelの振る舞いによるものだと思います。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ