zoukankan      html  css  js  c++  java
  • DataTable 导出Excel 下载 (NPOI)

     
     
    public class  ExcelHelper
    
    {
    
       public void DownLoadExcelNew(System.Data.DataTable data, Hashtable h, string fileName)
     {
    MemoryStream m = DataTableToMemoryNew(data, h);
    System.Web.HttpContext.Current.Response.Clear();
    System.Web.HttpContext.Current.Response.ClearHeaders();
    System.Web.HttpContext.Current.Response.Buffer = false;
    System.Web.HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
    System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
    System.Web.HttpContext.Current.Response.AppendHeader("Content-Length", m.Length.ToString());
    m.WriteTo(System.Web.HttpContext.Current.Response.OutputStream);
    System.Web.HttpContext.Current.Response.Flush();
    System.Web.HttpContext.Current.Response.End();
    
    }
    public MemoryStream DataTableToMemoryNew(System.Data.DataTable data, Hashtable h)
    {
    IWorkbook wk = new HSSFWorkbook();
    ISheet sheet = wk.CreateSheet("work");
    IRow rowCloumn = sheet.CreateRow(0);
    
    int count = 0;
    for (int i = 0; i < data.Columns.Count; i++)
    {
    if (h.ContainsKey(data.Columns[i].ColumnName.ToLower()))
    {
    rowCloumn.CreateCell(count).SetCellValue(h[data.Columns[i].ColumnName.ToLower()].ToString());
    count++;
    }
    }
    
    
    for (int r = 0; r < data.Rows.Count; r++)
    {
    //创建行
    IRow row = sheet.CreateRow(r + 1);
    count = 0;
    for (int c = 0; c < data.Columns.Count; c++)
    {
    if (h.ContainsKey(data.Columns[c].ColumnName.ToLower()))
    {
    row.CreateCell(count).SetCellValue(data.Rows[r][c].ToString());
    count++;
    }
    }
    }
    MemoryStream memoryStream = new MemoryStream();
    wk.Write(memoryStream);
    return memoryStream;
    
    
    }
    
    
    }
    View Code
  • 相关阅读:
    sizeof()使用错例:sizeof(i++)
    修改linux命令符和解决命令符太长的问题
    【转载】阻止拷贝的三种方式
    git命令几个总结
    scp用法
    RAII
    a linked list
    c++11之函数式编程实例
    [转]基于SAML的单点登录介绍
    [转]OAuth、OAuth2与OpenID区别和联系
  • 原文地址:https://www.cnblogs.com/xinxinzhihuo/p/4807652.html
Copyright © 2011-2022 走看看