使用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");


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM