2017-01-27 23 views
0

В двух местах на моем листе мне нужны ячейки с белым шрифтом и черным фоном. В одном месте (строка заголовка) он работает; в другом (значение даты), это не так, и я не вижу, что я делаю по-другому, что может привести к этой ошибке.Почему мой шрифт и фон (передний план) не работают здесь (Aspose Cells)?

Вот код, который работает (для строки заголовка):

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

..И вот код, который не работает (на сегодняшний день подряд кружили на скриншоте ниже):

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

Так что, кажется, отличается (что, возможно, имеет значение) в нерабочем кода является то, что он использует StyleFlag (поскольку необходимо установить формат даты):

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

... и, конечно же, SetStyle принимает флаг как второй arg (рабочий бит кода не нуждается в флагом, потому что он ничего не делает).

Как вы можете видеть ниже, в рассматриваемой ячейке нет даты (E4); он захватывает его с места, которое еще не на листе. Но тот факт, что шрифт черный, а не белый, а фон (называемый foreground by Aspose) белый, а не черный.

enter image description here

Так почему окраска не работает? Что мне нужно сделать или изменить, чтобы заставить его работать в ячейке E4?

ответ

1

Обратите внимание: как вы хотите применить закрашивание ячеек, так и цвета шрифта для рассматриваемой ячейки, поэтому вам необходимо установить соответствующие свойства StyleFlag в true, чтобы вышеупомянутые аспекты стиля могли вступить в силу. Пожалуйста, проверьте следующий фрагмент кода, который дает ожидаемые результаты.

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

Примечание: Я работаю евангелиста Developer в Aspose.

+0

Что означает «flag2.Font = true;» означает или делать? –

+0

Ну, он задает все параметры, связанные с шрифтом (атрибуты (под) под шрифтом, например IsBold, Color и т. Д.) До «true». –

1

Я думаю, вам нужно включить соответствующие параметры StyleFlag, чтобы применить правильное форматирование к ячейке (ям). Смотрите обновленный сегмент кода для справки: код например Пример:

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

Я работаю разработчиком Поддержка/Евангелиста в Aspose.