NFine框架JqGrid导出选中行为Excel实现方法

客户端

function PostAndGetFileByUrl(url,type,postdata) {
        var temp;
        $.ajax({
            url: url,
            type: type,
            data: {keyword:postdata},
            async: true,
            dataType: "Text",
            success: function (data) {
                downloadFile(data);
            }
        });
        return temp;
    }
    function btn_export()
    {
        var $gridList = $("#gridList");
        var rowData = $gridList.jqGrid('getGridParam','selarrrow');
        PostAndGetFileByUrl("/RunManage/EnvData/WriteToExcel", "POST", rowData.join(","));
    }
     function downloadFile(url) {
       try {
      var elemIF = document.createElement("iframe");
      elemIF.src = url;
      elemIF.style.display = "none";
      document.body.appendChild(elemIF);
    } catch (e) {

    }
  }

<a id="NF-export" class="btn btn-primary" onclick="btn_export()"><i class="fa fa-plus"></i>导出XLS</a>

  

  使用到了npoi库,请自行引用

[HttpPost]
        [HandlerAjaxOnly]
        public ActionResult WriteToExcel(string keyword)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("AAAA");
            dt.Columns.Add("BBBB");
            List<ItemEntity> dataList = EnvDataApp.GetListByKeywordArray(keyword);//请写自己的获取List方法
            foreach (var item in dataList)
            {
                DataRow dr = dt.NewRow();
                dr["AAAA"] = item.F_ID;
                dr["BBBB"] = item.F_FullName;
                dt.Rows.Add(dr);
            }
            NPOIExcel npoiexel = new NPOIExcel();

            string fileDir = DateTime.Now.ToString("yyyyMMdd");
            string fileName = "G" + Guid.NewGuid().ToString("N") + ".xls";
            string destDir = Server.MapPath(@"/XlsTemp") + "\\" + fileDir + "\\";
            if (!Directory.Exists(destDir))
            {
                Directory.CreateDirectory(destDir);
            }
            npoiexel.ToExcel(dt, "数据", "Sheet1", destDir + fileName);
            return Content("/XlsTemp/" + fileDir + "/" + fileName);
        }
    }

  注:这是一种写文件到磁盘方法,可以改造下,支持大文件,定时查询生成状态,可以重复下载。如果简单的excel可以直接Response.Write

posted @ 2016-11-18 17:55  zhaogaojian  阅读(3224)  评论(1编辑  收藏  举报