web-dev-qa-db-ja.com

EPPlusが、PatternTypeを設定したときに、「patterntypeが設定されていない場合、色を設定できない」と通知するのはなぜですか?

ヘッダー行をスタイルしようとする次のコードがあります。

worksheet.Cells["A32:D32"].Style.Font.Name = "Georgia";
worksheet.Cells["A32:D32"].Style.Font.Bold = true;
worksheet.Cells["A32:D32"].Style.Font.Size = 16;
worksheet.Cells["A32:D32"].Style.Fill.PatternType = ExcelFillStyle.Solid;
worksheet.Cells["A32:D33"].Style.Fill.BackgroundColor.SetColor(Color.CornflowerBlue);

System.ArgumentException was unhandled。。Message = Ca n't set color when patterntype is not set。Source = EPPlus。。。 "

本当の問題は何でしょうか?私am自分がそうではないと主張していることをしていますよね?

詳細については:

worksheet.Cells["A32"].LoadFromCollection(bookDataList, true);
// style header row
worksheet.Cells["A32:D32"].Style.Font.Name = "Georgia";
worksheet.Cells["A32:D32"].Style.Font.Bold = true;
worksheet.Cells["A32:D32"].Style.Font.Size = 16;
worksheet.Cells["A32:D32"].Style.Fill.PatternType = ExcelFillStyle.Solid;
worksheet.Cells["A32:D33"].Style.Fill.BackgroundColor.SetColor(Color.CornflowerBlue);
// style the rest
worksheet.Cells["A33:D59"].Style.Font.Name = "Candara";
worksheet.Cells["A33:D59"].Style.Fill.PatternType = ExcelFillStyle.Solid;
worksheet.Cells["A33:D59"].Style.Fill.BackgroundColor.SetColor(Color.Cornsilk);

「スタイルヘッダー行」を追加する前に「スタイル残り」のコードがあり、この問題に遭遇しなかったことに注意してください。コードは、PatternTypeを設定してからBackgroundColorを設定する場合とまったく同じです(使用される色と、コードが適用されるセルの範囲を除く)。

19
B. Clay Shannon

2つの行をよく見てください。

worksheet.Cells["A32:D32"].Style.Fill.PatternType = ExcelFillStyle.Solid;
worksheet.Cells["A32:D33"].Style.Fill.BackgroundColor.SetColor(Color.CornflowerBlue);

2行目にはD32の代わりにDがあるため、D33がまだ設定されていない場合は、そのエラーがスローされます。

28
Ernie S