web-dev-qa-db-fra.com

Pourquoi EPPlus me dit-il que «je ne peux pas définir la couleur lorsque le type de motif n'est pas défini» lorsque j'ai défini le type de motif?

J'ai ce code pour essayer de styliser une ligne d'en-tête:

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);

Il échoue sur la dernière ligne ci-dessus avec "System.ArgumentException n'a pas été géré. .Message = Impossible de définir la couleur lorsque le type de motif n'est pas défini. Source = EPPlus..."

Quel pourrait être le vrai problème? Je suis fais ce que je ne suis pas, non?

Pour plus de contexte:

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);

Notez que j'avais le code "style le reste" avant d'ajouter la "ligne d'en-tête de style" et que je n'ai pas rencontré ce problème. Le code est exactement le même que pour définir PatternType puis BackgroundColor (à l'exception de la couleur utilisée et de la plage de cellules auxquelles le code est appliqué).

19
B. Clay Shannon

Regardez attentivement les deux lignes:

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

La deuxième ligne a D au lieu de D32 donc si D33 n'est pas encore défini, il lèverait cette erreur.

28
Ernie S