zoukankan      html  css  js  c++  java
  • 导出excel-NPOI

    前台调用:

    view: <a href='/Admin/NurseUser/Excel' target='_blank'>导出Excel</a>

    js: window.location = "/Controller/Excel";

    后台代码(控制器):

    public FileResult Excel(){
    //第一步:(1)以虚拟表的形式获取要导出的数据
    DataTable dt_0 = this.Service.Excel(); 
    //第一步:(2)若字段复杂,新建虚拟表并设置栏位
    DataTable dt_1 = new DataTable();
    DataColumn field = null;
    field = new DataColumn("标题一"); dt_1.Columns.Add(field); 
    //第一步:(3)构建字典,用于字段的渲染
    Dictionary<string, string> dic= new Dictionary<string, string>();
    if(dic.ContainsKey("键")){//true
    dic.Add("键","值");
    }
    //第一步:(4)遍历dt_0,处理数据插入dt_1
    foreach (DataRow row in dt_0.Rows){
    DataRow dataRow_1 = dt_1.NewRow();
    if (row.ItemArray[3] != null) {
    if (dic.ContainsKey(row.ItemArray[3].ToString())){
    dataRow_1[0] = dic[row.ItemArray[3].ToString()];
    }
    } dt_1.Rows.Add(dataRow_1);
    }
    //第二步:创建excel工作簿、工作表
    NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
    NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("Sheet1");
    //第三步:工作表添加栏位
    NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0);
    row1.CreateCell(0).SetCellValue("标题一");
    row1.CreateCell(1).SetCellValue("标题二");
    //第四步:工作表填充数据
    for(int i = 0;i<dt_1.Rows.Count;i++){
    NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + 1);
    for (int j = 0; j < dt.Columns.Count; j++){
    rowtemp.CreateCell(j - 1).SetCellValue(dt.Rows[i][j].ToString());
    }
    }
    //第六步:写入客户端
    System.IO.MemoryStream ms = new System.IO.MemoryStream();
    book.Write(ms);
    ms.Seek(0, SeekOrigin.Begin);
    return File(ms, "application/vnd.ms-excel", "用户信息.xls");      
    }
    注意:此代码须在控制器里,在dao层 return File中的File会被当作变量处理,导致报错,其本质是一个类型。
    要么生,要么死
  • 相关阅读:
    SQL入门学习4-复杂查询
    SQL入门学习3-数据更新
    SQL入门学习2-聚合与排序
    SQL入门学习1-查询基础
    SQL入门学习0-数据库与SQL
    Exp9 20155218 Web安全基础实践
    20155218《网络对抗》Exp8 Web基础
    # 20155218 徐志瀚 EXP7 网络欺诈
    Exp6 20155218 信息搜集与漏洞扫描
    20155218《网络对抗》MSF基础应用
  • 原文地址:https://www.cnblogs.com/llljpf/p/6594215.html
Copyright © 2011-2022 走看看