zoukankan      html  css  js  c++  java
  • 使用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");

    原地址:https://www.cnblogs.com/leixin-nation/p/7999052.html

  • 相关阅读:
    Java基础——Java反射机制
    Java基础——Java常用类
    Java基础——多线程
    Java基础——IO流--转换流、标准输入输出流
    Java基础——IO流
    Java基础——枚举与注解
    Java基础——泛型
    codeforces B. Bear and Strings 解题报告
    codeforces A. Black-and-White Cube 解题报告
    codeforces B. Ping-Pong (Easy Version) 解题报告
  • 原文地址:https://www.cnblogs.com/RCJL/p/12557555.html
Copyright © 2011-2022 走看看