ClosedXml を使用して、Excel のセルの塗りつぶしの背景色を読み取ろうとしています。このサンプル コードを使用して、Excel ドキュメントのコンテンツを問題なく読み取ることができましたが、セルのFill BackgroundColorを 16 進値として読み取ることができません。BackgroundColorで定義されているThemeColorおよびThemeTintプロパティを確認できますが、これらをSystem.Colorまたは 16 進数値に変換する方法が見つかりません。これが私のコードです:
// Get all categories
while (!categoryRow.Cell(coCategoryId).IsEmpty())
{
IXLCell categoryName = categoryRow.Cell(coCategoryName);
categories.Add(categoryName.GetString() + " " + XLColor.FromTheme(categoryName.Style.Fill.BackgroundColor.ThemeColor, categoryName.Style.Fill.BackgroundColor.ThemeTint).Color.ToHex());
categoryRow = categoryRow.RowBelow();
}
メソッドXLColor.FromThemeは常に「テーマの色を色に変換できません」という例外をスローするようです。ThemeColorおよびThemeTint値からSystem.Colorを取得する別の方法を知っている人はいますか?
アップデート:
私はすでにBackgroundColorのColorプロパティを使用しようとしたことを述べていませんでしたが、残念ながらこれは正しく入力されていません。デバッガで表示すると、このプロパティがメソッドXLColor で取得したのと同じ例外をスローしていることがわかります。テーマから。したがって、これは間違いなく ClosedXml のバグのようです。誰かが回避策を知っていますか?