使用NPOI导出Excel 并设置Excel样式(合并单元格、行高、宽度、字体、边框、位置)

1、添加对NPOI的引用

2、创建excel文件对象

HSSFWorkbook wb = new HSSFWorkbook();

 

3、创建 工作表,也就是Excel中的sheet,给工作表赋一个名称 title

HSSFSheet sheet = (HSSFSheet)wb.CreateSheet(title);

 

4、设置某一列宽度

sheet.SetColumnWidth(0, 10 * 256);

列号从0开始

5、合并单元格 例: 第1行到第2行 第3列到第4列围成的矩形区域

sheet.AddMergedRegion(new CellRangeAddress(0, 1, 2, 3));

合并单元格后,只需对第一个位置赋值即可

6、在工作表中创建一行

/// <summary>
/// 创建行
/// </summary>
/// <param name="wb"></param>
/// <param name="sheet"></param>
/// <param name="rowNum">创建 一行 的行号 从0开始</param>
/// <param name="rowHeigh">行高</param>
public HSSFRow CreateRow(HSSFSheet sheet, int rowNum, float rowHeight)
{
HSSFRow row = (HSSFRow)sheet.CreateRow(rowNum); //创建行
row.HeightInPoints = rowHeight; //设置列头行高
return row;
}


7、设置单元格样式

/// <summary>
/// 设置样式
/// </summary>
/// <param name="wb"></param>
/// <param name="hAlignment">水平布局方式</param>
/// <param name="vAlignment">垂直布局方式</param>
/// <param name="boldWeight">字体加粗 (short.MaxValue)</param>
/// <param name="fontPonint">字体大小</param>
/// <param name="isBorder">是否需要边框 true是</param>
/// <returns></returns>
public HSSFCellStyle CreateStyle(HSSFWorkbook wb, HorizontalAlignment hAlignment, VerticalAlignment vAlignment, short boldWeight, short fontPonint, bool isBorder)
{
HSSFCellStyle cellStyle = (HSSFCellStyle)wb.CreateCellStyle(); //创建列头样式
cellStyle.Alignment = hAlignment; //水平居中
cellStyle.VerticalAlignment = vAlignment; //垂直居中
if (isBorder)
{
cellStyle.BorderBottom = BorderStyle.THIN;
cellStyle.BorderLeft = BorderStyle.THIN;
cellStyle.BorderRight = BorderStyle.THIN;
cellStyle.BorderTop = BorderStyle.THIN;
}
HSSFFont cellStyleFont = (HSSFFont)wb.CreateFont(); //创建字体
cellStyleFont.Boldweight = boldWeight; //字体加粗
cellStyleFont.FontHeightInPoints = fontPonint; //字体大小
cellStyle.SetFont(cellStyleFont); //将字体绑定到样式
return cellStyle;
}

居中方式可根据实际需要传入参数

8、创建单元格
/// <summary>
/// 创建单元格
/// </summary>
/// <param name="row">需要创建单元格的行</param>
/// <param name="cellStyle">单元格样式</param>
/// <param name="cellNum">创建第几个单元格(从0开始)</param>
/// <param name="cellValue">给单元格赋值</param>
/// <returns></returns>
public HSSFCell CreateCell(HSSFRow row, HSSFCellStyle cellStyle, int cellNum, string cellValue)
{
HSSFCell cell = (HSSFCell)row.CreateCell(cellNum); //创建单元格
cell.CellStyle = cellStyle; //将样式绑定到单元格
if (!string.IsNullOrEmpty(cellValue))
{
cell.SetCellValue(cellValue);
}
return cell;
}

9、以流的方式导出Excel

// 写入到客户端 
System.IO.MemoryStream ms = new System.IO.MemoryStream();
wb.Write(ms);
ms.Seek(0, SeekOrigin.Begin);
return File(ms, "application/vnd.ms-excel", title + ".xls");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值