zoukankan      html  css  js  c++  java
  • NPOI导出固定格式excel方法

    //dic表示excel中的sheet表名,可以导出多个sheet

    private void Export1(Dictionary<string, DataTable> dic, string filePath, string fileName)
    {
    #region 加载模板文件到工作簿对象中

    //创建工作簿对象
    XSSFWorkbook hssfworkbook;
    //打开模板文件到文件流中
    using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
    {
    //将文件流中模板加载到工作簿对象中
    hssfworkbook = new XSSFWorkbook(file);
    }
    #endregion

    #region 根据模板设置工作表的内容
    foreach (string key in dic.Keys)
    {
    //建立一个名为Sheet1的工作表
    ISheet ws = hssfworkbook.GetSheet(key);
    ICellStyle style1 = hssfworkbook.CreateCellStyle();
    style1.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
    style1.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
    style1.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
    style1.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
    //style1.FillPattern =FillPattern.SolidForeground;

    DataTable dt = (DataTable)dic[key];
    //将数据添加到表中对应的单元格中,因为行已经创建,不需要重新创建行
    for (int i = 0; i < dt.Rows.Count; i++)
    {
    IRow row = ws.CreateRow(i + 4);
    for (int j = 0; j < dt.Columns.Count; j++)
    {
    ICell cell = row.CreateCell(j, CellType.String);
    cell.CellStyle = style1;
    cell.SetCellValue(dt.Rows[i][dt.Columns[j].ColumnName].ToString());
    }
    }
    //强制Excel重新计算表中所有的公式
    ws.ForceFormulaRecalculation = true;
    }

    #endregion

    #region 设置响应头(文件名和文件格式)
    //设置响应的类型为Excel
    Response.ContentType = "application/vnd.ms-excel";
    //设置下载的Excel文件名
    Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", fileName));
    //Clear方法删除所有缓存中的HTML输出。但此方法只删除Response显示输入信息,不删除Response头信息。以免影响导出数据的完整性。
    Response.Clear();
    #endregion

    #region 写入到客户端
    using (MemoryStream ms = new MemoryStream())
    {
    //将工作簿的内容放到内存流中
    hssfworkbook.Write(ms);
    Response.AddHeader("Content-Length", ms.ToArray().Length.ToString());

    //将内存流转换成字节数组发送到客户端
    Response.BinaryWrite(ms.GetBuffer());
    Response.End();
    }
    #endregion


    }

  • 相关阅读:
    第11组 Beta冲刺(1/5)
    第11组 Alpha事后诸葛亮
    第11组 Alpha冲刺(6/6)
    第11组 Alpha冲刺(5/6)
    第11组 Alpha冲刺(4/6)
    第11组 Alpha冲刺(3/6)
    毕设笔记
    软工实践个人总结
    第01组 Beta版本演示
    第01组 Beta冲刺(5/5)
  • 原文地址:https://www.cnblogs.com/kaiwanlin/p/5782847.html
Copyright © 2011-2022 走看看