NPOI导出Excel,简单实现代码

1.首先项目需要引入NPOI.dll
2..cs文件需要引入
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
3.导出的代码,根据个人需求自己修改……
public void NpoiExcel(DataTable dt, string title)
    {
        NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
        NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet(title);
        int dtRows = dt.Rows.Count;
        int dtColums = dt.Columns.Count;


        //1.标题合并单元格
        sheet1.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, dtColums - 1));
        IRow row0 = sheet1.CreateRow(0);
        row0.HeightInPoints = 30;
        ICell cell0 = row0.CreateCell(0);
        cell0.SetCellValue(title);
        ICellStyle style0 = book.CreateCellStyle();
        style0.Alignment = HorizontalAlignment.CENTER;//水平居中 
        style0.VerticalAlignment = VerticalAlignment.CENTER;//垂直居中 
        style0.WrapText = true;//自动换行
        IFont font0 = book.CreateFont();
        font0.Boldweight = 700;
        font0.FontHeightInPoints = 20;
        style0.SetFont(font0);
        cell0.CellStyle = style0;


        //2.导出条件合并单元格
        sheet1.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(1, 1, 0, dtColums - 1));
        IRow row1 = sheet1.CreateRow(1);
        row1.HeightInPoints = 20;
        ICell cell1 = row1.CreateCell(0);
        cell1.SetCellValue("日期区间:" + startDate.Text.Trim() + " - " + endDate.Text.Trim());


        //3.列名样式
        ICellStyle style2 = book.CreateCellStyle();
        style2.Alignment = HorizontalAlignment.CENTER;//水平居中 
        style2.VerticalAlignment = VerticalAlignment.CENTER;//垂直居中 
        style2.WrapText = true;//自动换行
        IFont font2 = book.CreateFont();
        font2.Boldweight = 700;
        style2.SetFont(font2);
        style2.BottomBorderColor = HSSFColor.BLACK.index;
        style2.BorderBottom = NPOI.SS.UserModel.BorderStyle.THIN;
        style2.BorderLeft = NPOI.SS.UserModel.BorderStyle.THIN;
        style2.BorderRight = NPOI.SS.UserModel.BorderStyle.THIN;
        style2.BorderTop = NPOI.SS.UserModel.BorderStyle.THIN;
        style2.Alignment = NPOI.SS.UserModel.HorizontalAlignment.CENTER;
        style2.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.CENTER;
        style2.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.GREY_25_PERCENT.index;
        style2.FillPattern = NPOI.SS.UserModel.FillPatternType.SOLID_FOREGROUND;


        //列名
        NPOI.SS.UserModel.IRow row = sheet1.CreateRow(2);
        row.HeightInPoints = 20;
        ICell cellCo; //单元格
        for (int i = 0; i < dtColums; i++)
        {
            cellCo = row.CreateCell(i);
            cellCo.CellStyle = style2;
            cellCo.SetCellValue(dt.Columns[i].ColumnName);
        }


        //4.行内容样式
        ICellStyle style3 = book.CreateCellStyle();
        style3.Alignment = HorizontalAlignment.CENTER;//水平居中 
        style3.VerticalAlignment = VerticalAlignment.CENTER;//垂直居中 
        style3.WrapText = true;//自动换行
        IFont font3 = book.CreateFont();
        font3.Boldweight = 600;
        style3.SetFont(font3);
        style3.BottomBorderColor = HSSFColor.BLACK.index;
        style3.BorderBottom = NPOI.SS.UserModel.BorderStyle.THIN;
        style3.BorderLeft = NPOI.SS.UserModel.BorderStyle.THIN;
        style3.BorderRight = NPOI.SS.UserModel.BorderStyle.THIN;
        style3.BorderTop = NPOI.SS.UserModel.BorderStyle.THIN;
        style3.Alignment = NPOI.SS.UserModel.HorizontalAlignment.CENTER;
        style3.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.CENTER;
        style3.FillPattern = NPOI.SS.UserModel.FillPatternType.SOLID_FOREGROUND;
        //行
        for (int i = 0; i < dtRows; i++)
        {
            NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + 3);
            rowtemp.HeightInPoints = 20;
            for (int a = 0; a < dtColums; a++)
            {
                cellCo = rowtemp.CreateCell(a);
                cellCo.CellStyle = style3;
                cellCo.SetCellValue(dt.Rows[i][a].ToString());
            }
        }


        //合计行
        NPOI.SS.UserModel.IRow rowFooter = sheet1.CreateRow(dtRows + 3);
        rowFooter.HeightInPoints = 20;
        cellCo = rowFooter.CreateCell(0);
        cellCo.CellStyle = style3;
        cellCo.SetCellValue("合计");
        for (int i = 1; i < dtColums; i++)
        {
            cellCo = rowFooter.CreateCell(i);
            cellCo.CellStyle = style3;
            cellCo.SetCellValue(Convert.ToInt32(dt.Compute("SUM(" + dt.Columns[i].ColumnName + ")", "true")).ToString());
        }


        //列宽自适应,只对英文和数字有效
        for (int i = 0; i <= dtColums; i++)
        {
            sheet1.AutoSizeColumn(i);
        }


        // 写入到客户端 
        System.IO.MemoryStream ms = new System.IO.MemoryStream();
        book.Write(ms);
        Response.AddHeader("Content-Disposition", "attachment;filename=\"" + HttpUtility.UrlEncode(title + ".xls", System.Text.Encoding.UTF8) + "\"");
        Response.BinaryWrite(ms.ToArray());
        book = null;
        ms.Close();
        ms.Dispose();
    } 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangnaisheng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值