为什么当我设置PatternType时,EPPlus告诉我“当没有设置patterntype时无法设置颜色”?

时间:2016-07-29 18:52:57

标签: c# excel epplus epplus-4

我已经有了这个代码来尝试设置标题行的样式:

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未处理... .Message =未设置patterntype时无法设置颜色。   来源= 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完全相同(使用的颜色除外,以及应用代码的单元格范围除外)。

1 个答案:

答案 0 :(得分:21)

仔细观察两行:

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

第二行有 D33 而非 D32 ,所以如果D33尚未设置,则会抛出该错误。