29

ヘッダー行のスタイルを設定するには、次のコードを使用します。

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=Can't set color when patterntype is not set. Source=EPPlus. . .」で失敗します。

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

より多くのコンテキストについて:

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 を設定する場合とまったく同じです (使用される色と、コードが適用されるセルの範囲を除く)。

4

1 に答える 1

44

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

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

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

于 2016-08-01T15:34:39.710 に答える