我正在使用NPOI在Asp.Net MVC应用程序中输出Excel,对于纯文本非常有效,但现在被要求添加格式并且在需要一个单元格内有粗体文本后面跟着非粗体文本的情况下遇到问题。例如:
这段文字是粗体 - 这段文字是普通文本
我知道可以给单个单元格设置样式,但这不起作用,也无法找到任何可以为单元格提供预格式化富文本的方法。
我能想到的唯一可能的解决方案是分别创建两个单元格,然后将它们合并在一起,但那么格式是否会丢失?
在NPOI中是否有我忽略的实现此功能的方法?
我正在使用NPOI在Asp.Net MVC应用程序中输出Excel,对于纯文本非常有效,但现在被要求添加格式并且在需要一个单元格内有粗体文本后面跟着非粗体文本的情况下遇到问题。例如:
这段文字是粗体 - 这段文字是普通文本
我知道可以给单个单元格设置样式,但这不起作用,也无法找到任何可以为单元格提供预格式化富文本的方法。
我能想到的唯一可能的解决方案是分别创建两个单元格,然后将它们合并在一起,但那么格式是否会丢失?
在NPOI中是否有我忽略的实现此功能的方法?
var font = reportWorkbook.CreateFont();
font.FontHeightInPoints = 11;
font.FontName = "Calibri";
font.IsBold = true;
var cell = headerRow.CreateCell(0);
cell.SetCellValue("Test Bold");
cell.CellStyle = reportWorkbook.CreateCellStyle();
cell.CellStyle.SetFont(font);
幸运的是,你可以做到这一点... 看看这段代码:
Font f1=wb.CreateFont();
f1.Color=HSSFColor.RED.index;
ws.GetRow(1).GetCell(0).RichStringCellValue.ApplyFont(1, 5, f1);
看起来Ernie Banzon的答案不再完全按照描述工作,可能是由于命名空间的更改(或者事实上我正在使用HSSF命名空间?)
// usings
using NPOI.HSSF.UserModel;
// IWorkbook doc
IFont font = doc.CreateFont();
font.FontHeightInPoints = 11;
font.FontName = "Arial";
font.Boldweight = (short)FontBoldWeight.BOLD;
使用此选项
font.Boldweight = (short)700;//FontBoldWeight.Bold;
实际的语法应该像下面这样。但是有时候这两种语法都不起作用。
font.Boldweight = FontBoldWeight.Bold ;
Or
font.Boldweight = (short)FontBoldWeight.Bold;
FontBoldWeight是枚举类型,类型转换后有时可能无法正常工作。如果您使用实际的短枚举值或者进行类型转换,就可以解决这个问题。下面是FontBoldWeight的声明,它将使事情更清晰明了。
**public enum FontBoldWeight
{
None = 0,
Normal = 400,
Bold = 700,
}**
Boldweight
属性已过时,其功能现已由bool属性IsBold
取代。 - dall