为什么我的字体和背景(前景)着色在这里不起作用(Aspose Cells)?
Why is my font and background (foreground) colorization not working here (Aspose Cells)?
在我 sheet 的两个地方,我需要具有白色字体和黑色背景的单元格。在一个地方(header 行),它有效;在另一个(日期值)中,它没有,而且我没有看到我所做的不同会导致此失败。
这是有效的代码(对于 header 行):
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);
因此 non-working 代码中似乎有所不同(可能很重要)的是它使用了 StyleFlag(因为它需要设置日期格式):
StyleFlag flag2 = new StyleFlag();
flag2.NumberFormat = true;
styleDate.Custom = "mm/dd/yyyy";
...当然,SetStyle 将标志作为第二个参数(代码的工作位不需要标志,因为它没有做任何花哨的事情)。
如下所示,相关单元格 (E4) 中没有日期;它从 sheet 上还没有的地方抓取它。但事实上字体是黑色而不是白色,背景(Aspose 称为前景)是白色而不是黑色。
那么为什么着色不起作用?我需要做什么或更改什么才能让它在单元格 E4 中工作?
我认为您需要启用相关的 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 担任支持开发人员/传播者。
请注意,由于您希望将单元格底纹和字体颜色应用于相关单元格,因此您需要将适当的 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);
注意:我在 Aspose 担任开发人员布道师。
在我 sheet 的两个地方,我需要具有白色字体和黑色背景的单元格。在一个地方(header 行),它有效;在另一个(日期值)中,它没有,而且我没有看到我所做的不同会导致此失败。
这是有效的代码(对于 header 行):
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);
因此 non-working 代码中似乎有所不同(可能很重要)的是它使用了 StyleFlag(因为它需要设置日期格式):
StyleFlag flag2 = new StyleFlag();
flag2.NumberFormat = true;
styleDate.Custom = "mm/dd/yyyy";
...当然,SetStyle 将标志作为第二个参数(代码的工作位不需要标志,因为它没有做任何花哨的事情)。
如下所示,相关单元格 (E4) 中没有日期;它从 sheet 上还没有的地方抓取它。但事实上字体是黑色而不是白色,背景(Aspose 称为前景)是白色而不是黑色。
那么为什么着色不起作用?我需要做什么或更改什么才能让它在单元格 E4 中工作?
我认为您需要启用相关的 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 担任支持开发人员/传播者。
请注意,由于您希望将单元格底纹和字体颜色应用于相关单元格,因此您需要将适当的 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);
注意:我在 Aspose 担任开发人员布道师。