2017-01-27 12 views
0

私のシート上の2箇所に、白いフォントと黒い背景を持つセルが必要です。 1つの場所(ヘッダー行)で動作します。もう一方(日付値)では、そうではなく、私はこの失敗を引き起こすように私が何をやっているのか分かりません。フォントと背景(フォアグラウンド)の色付けがここで機能しないのはなぜですか(アスペクトセル)?

CellsFactory cfHeaderRow = new CellsFactory(); 
Cell headerRowCell; 
Style styleHeaderRow; 
for (int x = 0; x < drPrices.FieldCount-1; x++) 
{ 
    headerRowCell = pricePushSheet.Cells[6, x]; 
    headerRowCell.PutValue(drPrices.GetName(x)); 
    pricePushSheet.Cells.SetColumnWidth(x, 9); 
    styleHeaderRow = cfHeaderRow.CreateStyle(); 
    styleHeaderRow.HorizontalAlignment = TextAlignmentType.Center; 
    styleHeaderRow.Font.Color = Color.White; 
    styleHeaderRow.ForegroundColor = Color.Black; 
    styleHeaderRow.Pattern = BackgroundType.Solid; 
    styleHeaderRow.IsTextWrapped = true; 
    headerRowCell.SetStyle(styleHeaderRow); 
} 

..andここで(以下のスクリーンショットで丸で囲んだ日付の行の)動作していないコードである:ここ

は、(ヘッダ行のために)働いているコードである

CellsFactory cfDate = new CellsFactory(); 
Cell dateCell = pricePushSheet.Cells[3, 4]; 
Style styleDate = cfDate.CreateStyle(); 
dateCell.PutValue(pricePushSheet.Cells[7, 1]); 
StyleFlag flag2 = new StyleFlag(); 
flag2.NumberFormat = true; 
styleDate.Font.IsBold = true; 
styleDate.HorizontalAlignment = TextAlignmentType.Center; 
styleDate.Font.Color = Color.White; 
styleDate.ForegroundColor = Color.Black; 
styleDate.Pattern = BackgroundType.Solid; 
styleDate.Custom = "mm/dd/yyyy"; 
dateCell.SetStyle(styleDate, flag2); 

それでは、非稼働コードで(つまりは問題かもしれない)異なるように思えることは(それが日付の書式を設定する必要があるため)、それはStyleFlagを使用していることである:

StyleFlag flag2 = new StyleFlag(); 
flag2.NumberFormat = true; 
styleDate.Custom = "mm/dd/yyyy"; 

...もちろん、SetStyleは2番目の引数としてフラグを受け取ります(コードの作業ビットにはフラグが必要ありません。これは何の意味もないからです)。

下記のように、問題のセルに日付がありません(E4)。それはまだシート上にない場所からそれをつかむ。しかし、フォントが白ではなく黒で、バックグラウンド(Asposeで前景と呼ばれる)が黒ではなく白であるという事実。なぜ着色が動作していない

enter image description here

?セルE4で動作させるには、何を行うか、変更する必要がありますか?

答えて

1

セルシェーディングとフォントの色を問題のセルに適用したいので、適切なStyleFlagプロパティをtrueに設定して、前述のスタイルの側面が有効になるようにする必要があります。期待される結果を出している次のコードを確認してください。

var workbook = new Workbook(dir + "book1.xlsx"); 
var pricePushSheet = workbook.Worksheets[0]; 
var cfDate = new CellsFactory(); 
var dateCell = pricePushSheet.Cells[3, 4]; 
var styleDate = cfDate.CreateStyle(); 
dateCell.PutValue(pricePushSheet.Cells[7, 1].Value); 
var flag2 = new StyleFlag(); 
flag2.NumberFormat = true; 
flag2.CellShading = true; 
flag2.Font = true; 
styleDate.Font.IsBold = true; 
styleDate.HorizontalAlignment = TextAlignmentType.Center; 
styleDate.Font.Color = Color.White; 
styleDate.ForegroundColor = Color.Black; 
styleDate.Pattern = Aspose.Cells.BackgroundType.Solid; 
styleDate.Custom = "mm/dd/yyyy"; 
dateCell.SetStyle(styleDate, flag2); 

enter image description here

注:私はAspose社で開発者エバンジェリストとして働いています。

+0

「flag2.Font = true;」とは何ですか?どういう意味ですか? –

+0

まあ、Font関連のすべてのオプション(Fontの下の属性(sub)、例えばIsBold、Colorなど)を "true"に指定します。 –

1

セルに適切な書式設定を適用するには、関連するStyleFlagオプションをオンにする必要があると思います。あなたの参考のために更新されたコードセグメントを参照してください: 例えば サンプルコード:

CellsFactory cfDate = new CellsFactory(); 
Cell dateCell = pricePushSheet.Cells[3, 4]; 
Style styleDate = cfDate.CreateStyle(); 
dateCell.PutValue(pricePushSheet.Cells[7, 1]); 
styleDate.Font.IsBold = true; 
styleDate.HorizontalAlignment = TextAlignmentType.Center; 
styleDate.Font.Color = Color.White; 
styleDate.ForegroundColor = Color.Black; 
styleDate.Pattern = BackgroundType.Solid; 
styleDate.Custom = "mm/dd/yyyy"; 
StyleFlag flag2 = new StyleFlag(); 
flag2.NumberFormat = true; 
flag2.CellShading = true; 
flag2.HorizontalAlignment = true; 
flag2.FontColor = true; 
flag2.FontBold = true; 
dateCell.SetStyle(styleDate, flag2); 

私はAspose社のサポート、開発者/エバンジェリストとして働いています。

関連する問題