CellStyle的NPOI字体不起作用,必须修复工作表

时间:2019-06-11 10:09:32

标签: c# .net-core npoi

我正在尝试在Excel中设置链接的样式,但是由于某些原因,我无法使CellStyle Font正常工作

.NET Core 2.1

NPOI:2.1.4

错误:

  

Excel已完成文件级验证和修复。该工作簿的某些部分可能已被修复或拒绝。   修复的记录:/xl/styles.xml(样式)中的字体

这很好:

var myStyle = workbook.CreateCellStyle();

myStyle.BorderBottom = BorderStyle.Double;

cell.Hyperlink = new XSSFHyperlink(HyperlinkType.Url) { Address = url };
cell.CellStyle = myStyle;

这不是:

var myStyle = workbook.CreateCellStyle();
var myFont = workbook.CreateFont();

myStyle.BorderBottom = BorderStyle.Double;

myStyle.SetFont(myFont);
cell.Hyperlink = new XSSFHyperlink(HyperlinkType.Url) { Address = url };
cell.CellStyle = myStyle;     

这不是2:

var myStyle = workbook.CreateCellStyle();
var myFont = workbook.CreateFont();

myStyle.BorderBottom = BorderStyle.Double;
myFont.Color = IndexedColors.Blue.Index;

myStyle.SetFont(myFont);
cell.Hyperlink = new XSSFHyperlink(HyperlinkType.Url) { Address = url };
cell.CellStyle = myStyle;

我尝试使用设置myFont.Color

  • IndexedColors.Blue.Index;

  • HSSFColor.Blue.Index;

  • HSSFColor.Blue.Index2;

  • 新的XSSFColor(Color.Blue).Indexed;

并且每次结果都相同-Excel正在修复工作表。

有什么主意吗?

编辑

  

如果您删除超链接的代码,字体可以工作吗?只是想看看超链接和字体的组合是否不起作用...

var myStyle = workbook.CreateCellStyle();
var myFont = workbook.CreateFont();

myStyle.BorderBottom = BorderStyle.Double;
myStyle.SetFont(myFont);
//cell.Hyperlink = new XSSFHyperlink(HyperlinkType.Url) { Address = url };
cell.CellStyle = myStyle;  

结果仍然相同

  

Excel已完成文件级验证和修复。该工作簿的某些部分可能已被修复或拒绝。   修复的记录:/xl/styles.xml(样式)中的字体

1 个答案:

答案 0 :(得分:0)

这是NPOI 2.4.1中的一个错误,它将在下一个版本中修复:

https://github.com/tonyqus/npoi/issues/165

现在只需设置FontHeight或FontHeightInPoints即可。