2017-01-27 3 views
0

À deux endroits sur ma feuille, j'ai besoin de cellules qui ont une police blanche et un fond noir. Dans un endroit (la rangée d'en-tête), cela fonctionne; dans l'autre (une valeur de date), ce n'est pas le cas, et je ne vois pas ce que je fais différemment qui causerait cet échec.Pourquoi la coloration de mes polices et de mon arrière-plan (premier plan) ne fonctionne-t-elle pas ici (Aspose Cells)?

Voici le code qui fonctionne (pour la ligne d'en-tête):

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

..et est ici le code qui ne fonctionne pas (pour la ligne de date encerclée dans la capture d'écran ci-dessous):

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

Alors ce qui semble être différent (qui peut avoir son importance) dans le code non-travail est qu'il utilise un StyleFlag (parce qu'il a besoin de définir le format de date):

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

... et, bien sûr, le SetStyle prend le drapeau comme un second argument (le bit de travail n'a pas besoin de drapeau, car il ne fait rien de fantaisie).

Comme vous pouvez le voir ci-dessous, il n'y a pas de date dans la cellule en question (E4); il l'attrape à partir d'un endroit qui n'est pas encore sur la feuille. Mais le fait que la police est noire au lieu de blanc, et l'arrière-plan (appelé premier plan par Aspose) est blanc au lieu de noir.

enter image description here

Alors pourquoi la coloration ne fonctionne pas? Que dois-je faire ou changer pour le faire fonctionner dans la cellule E4?

Répondre

1

Veuillez noter que si vous souhaitez appliquer la nuance de cellule ainsi que les couleurs de police à la cellule en question, vous devez définir les propriétés StyleFlag appropriées sur true pour que les aspects de style mentionnés ci-dessus puissent prendre effet. Veuillez vérifier le code suivant qui produit les résultats attendus.

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

Note: Je travaille comme évangéliste Developer à Aspose.

+0

Que signifie "flag2.Font = true;" veux dire ou faire? –

+0

Eh bien, il spécifie toutes les options liées à la police (attributs (sub) sous Font, par exemple IsBold, Color, etc.) à "true". –

1

Je pense que vous devez activer les options StyleFlag appropriées pour appliquer une mise en forme correcte aux cellules. Voir le segment de code mis à jour pour votre référence: Code par exemple Exemple:

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

Je travaille en tant que développeur de Support/évangéliste à Aspose.