(四)Web应用开发---导出到Excel

导出到Excel、UI设计类如

  • Copy样例Html代码到新建Html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>盘点数据查询 v2.0</title>
    <script src="/Scripts/jquery-1.8.2.min.js"></script>
    <script src="/Scripts/wrap/jquery.easyui.min.js"></script>
    <script src="/scripts/wrap/locale/easyui-lang-zh_CN.js"></script>
    <script src="/Scripts/datasrvrequest.js"></script>
    <script src="/Scripts/json2.js"></script>
    <link href="/Scripts/wrap/themes/icon.css" rel="stylesheet" />
    <link href="/scripts/wrap/themes/default/easyui.css" rel="stylesheet" />

<script type="text/javascript" language="javascript">
        var editIndex = undefined;
        function grid_load_callback(data, status) {
            $("#dg").datagrid("loadData", data);

}
        function grid_load(pageindex, pagesize) {
            if (pageindex == null)
                pageindex = 1;
            if (pagesize == null)
                pagesize = 20;
            var ph = new parmHelper();

var logun = request("userno");
            var sn = $.getJquery("ddlsnlist").combobox("getValue");
            var flag = $.getJquery("ddlstatuslist").combobox("getValue");
            if (flag == "") flag = -2;
            var cc = $.getValue("txtcostcenter");
            var fno = $.getValue("txtfano");
            ph.Add("userno", logun);
            ph.Add("sn", sn);
            ph.Add("cc", cc);
            ph.Add("fano", fno);
            
            ph.Add("flags", flag);
            ph.Add("sortfields", "");

ph.Add("pagesize", pagesize);
            ph.Add("pageindex", pageindex);
            var p = JSON2.stringify(ph.KeyValueArray);
            retrieveJsonData("/FADB/GetPagerDSJson", p, "510624862", grid_load_callback);//405576483
        }

function btnsearch_click() {
            grid_load(0, 20);
        }

function initGrid(grid) {
            getjquery(‘dg‘).datagrid({
                //title: ‘CheckBox Selection on DataGrid‘,
                url: ‘‘,
                width: ‘700‘,
                rownumbers: true,
                pageList: [20, 60, 100],
                columns: [[
                { field: ‘rowid‘, width: 20 },
                { field: ‘sn‘, title: ‘申请单号‘, width: 100 },
                { field: ‘FANO‘, title: ‘资产编号‘, width: 100 },
                { field: ‘FAName‘, title: ‘名称‘, width: 100 },
                { field: ‘CostCenter‘, title: ‘费用代码‘, width: 100 },
                { field: ‘Location‘, title: ‘存放位置‘, width: 500 },
                { field: ‘flag‘, title: ‘状态‘, width: 80 },
                { field: ‘CreateTime‘, title: ‘创建时间‘, width: 130 }
                ]],
                fit: true,
                singleSelect: true,
                //selectOnCheck: false,
                //checkOnSelect: false,
                striped: true, //行背景交换
                nowap: true, //列内容多时自动折至第二行

pagination: true,
                rowStyler: function (index, row) {
                    //if (index%2==0) {
                    //    return ‘background-color:#6293BB;color:#fff;‘;
                    //}
                }

});

}
        //初始化盘点清单回调
        function datachange_callback(data, status) {
            if (data.length > 0 && data[0].tcount > 0) {
                $.messager.alert(‘操作结果提示‘, ‘操作执行成功!‘, ‘info‘);
                grid_load(0, 20);
            }
            else
                $.messager.alert(‘操作结果提示‘, ‘操作执行失败!‘, ‘error‘);
        }

function initGridPager() {
            var grid = getjquery("dg");
            var p = grid.datagrid("getPager");
            (p).pagination({
                onSelectPage: function (pageNumber, pageSize) {
                    grid_load(pageNumber, pageSize);
                }

});
        }

function ddlbind_callback(data, status) {
            getjquery("ddlsnlist").combobox("loadData", data);
        }
        function bindSNComboBoxList() {
            retrieveJsonData("/FADB/GetDTJson", "", "270624007", ddlbind_callback);
        }
        function bindStatusComboBoxList() {
            retrieveJsonData("/FADB/GetDTJson", "", "791673868", function (data, status) { getjquery("ddlstatuslist").combobox("loadData", data); });
        }
        $(function () {
            //读取数据
            getjquery("btnsearch").bind("click", btnsearch_click);
            bindSNComboBoxList();
            bindStatusComboBoxList();
            EnterEvent.InputEnterEventBind(grid_load);

//初始化数据显示结构
            initGrid();
            //初始化分页控件
            initGridPager()
            //加载数据
            grid_load(0, 20);
            getjquery("btnexport").bind("click", btnexport_click);
        });
        //初始化盘点清单回调
        function datachange_callback(data, status) {
            if (data.length > 0 && data[0].tcount > 0) {
                $.showInfoMsg(‘操作执行成功!‘);
                grid_load(0, 20);
            }
            else
                $.showErrorMsg(‘操作执行失败!‘);
            $.closeWaiting();
        }
        function btnexport_click() {

var ph = new parmHelper();
            ph.Add("pagesize", 200000);
            var p = JSON2.stringify(ph.KeyValueArray);
            $.showWaiting();

//window.openwindow("/FADB/ExportExcel?hook=839674039", "导出盘点数据", 500, 600);
            window.open("/FADB/ExportExcel?hook=839674039");
            $.closeWaiting();
        }
    </script>

</head>
<body class="easyui-layout">
    <div data-options="region:‘north‘,border:false,title:‘盘点数据查询‘" style="height: 135px;padding: 10px">
        <table class="grid" data-options="fit:true;">
            <tr>
                <td>单号:</td>
                <td>
                    <input class="easyui-combobox" id="ddlsnlist" name="ddlsnlist" data-options="valueField:‘sn‘,textField:‘sn‘" />
                </td>
                <td>资产编号:</td>
                <td><input class="text-left easyui-tooltip" type="text" title="请输入查询的资产编码." id="txtfano" name="name" /></td>
                <td>费用代码:</td>
                <td><input class="text-left easyui-tooltip" type="text" title="请输入查询的费用代码." id="txtcostcenter" name="name" /></td>
                <td>状态:</td>
                <td><input class="easyui-combobox" id="ddlstatuslist" name="ddlstatuslist" data-options="valueField:‘flag‘,textField:‘status‘" /></td>
            </tr>

<tr>
                <td colspan="8">
                    <a href="#" id="btnsearch" class="easyui-linkbutton" title="" data-options="iconCls:‘icon-search‘">查 询</a><a href="#" id="btnexport" class="easyui-linkbutton" title="" data-options="iconCls:‘icon-save‘">导 出</a>
                </td>
            </tr>
        </table>
    </div>

<div data-options="region:‘center‘,title:‘检索结果列表‘">
        <table id="dg" class="easyui-datagrid" style="width: 700px; height: 300px"></table>
    </div>
    <input type="hidden" id="hidids" />
</body>
</html>

  • 关键JS代码部分如红色背景部分所示
  • Controler代码示例

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace FAMWebApp.Controllers
{
    public class FADBController : Controller
    {
        public FADBController()
        {
            _BaseControler = new BaseControler();
        }
        //
        // GET: /FADB/
        BaseControler _BaseControler;
        public ActionResult Index()
        {
            return View();
        }
        public ActionResult GetDTJson()
        {
            return _BaseControler.GetDTJson(this.HttpContext);
        }
        public ActionResult GetTreeJson()
        {
            return _BaseControler.GetTreeJson(this.HttpContext);
        }
        public ActionResult GetTreeJson2()
        {
            return _BaseControler.GetTreeJson2(this.HttpContext);
        }
        public ActionResult GetDSJson()
        {
            return _BaseControler.GetDSJson(this.HttpContext);
        }
        /// <summary>
        /// 获取数据集JSon,含分页功能,easyui-datagrid 分页数据提供
        /// </summary>
        /// <returns></returns>
        public ActionResult GetPagerDSJson()
        {
            return _BaseControler.GetPagerDSJson(this.HttpContext);
        }

public ActionResult PostJson()
        {
            return _BaseControler.PostJson(this.HttpContext);
        }
        public ActionResult ExportExcel()
        {
            return _BaseControler.ExportExcel(this.HttpContext);
        }
    }
}

  • BaseControler ExportExcel实现

using DCL;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace FAMWebApp.Controllers
{
    public class BaseControler : Controller
    {
        int DBType { get { return (int)DataAccessControl.DBType.FAMS; } }
        public ActionResult Index()
        {
            return View();
        }
        public ActionResult StartWorkFlow(HttpContextBase context)
        {
            string jsonstr = "";
            try
            {
                PN3.Workflow wf = new PN3.Workflow();
                Models.RequestProcessParmModels rpm = new Models.RequestProcessParmModels(context);
                List<Common.ProcessParms> list = rpm.ProcessParameterList;
                int index = 0;
                foreach (Common.ProcessParms item in list)
                {
                    try
                    {
                        wf.PNServer = "43.98.48.141";
                        wf.WorkFlowCode = item.ProcessName;             //工作流Code
                        wf.Parameters = item.Parms;                       //发起参数
                        wf.LockNo = item.SN;                   //申请单位号   
                        wf.AutoStartProcess();
                        index += 1;
                        rpm.SNS += item.SN + ",";
                    }
                    catch (Exception er)
                    {

}
                }
                try
                {
                    rpm.HookName = DataAccessControl.DBProviderInstance(DBType).GetStoreProcName(rpm.HookId);
                    rpm.ParmsDictionary["@sns"] = rpm.SNS;
                    rpm.ParmsDictionary["@userno"] = rpm.UserNo;
                    DataTable dt = DataAccessControl.DBProviderInstance(DBType).ExecStoreProcedureForGettingTable(rpm.ParmsDictionary, rpm.HookName);
                    jsonstr = Common.JsonHelper.DataTable2Json(dt);

}
                catch { }
            }
            catch (Exception er)
            {
                jsonstr = "[{\"tcount\":\"0\",\"msg\":\"" + er.Message + "!\"}]";
            }

return Content(jsonstr);
        }
        public ActionResult GetDTJson(HttpContextBase context)
        {
            Models.RequestParmModels rpms = new Models.RequestParmModels(context);
            rpms.HookName = DataAccessControl.DBProviderInstance((int)DataAccessControl.DBType.FAMS).GetStoreProcName(rpms.HookId);
            DataTable dt = DataAccessControl.DBProviderInstance(DBType).ExecStoreProcedureForGettingTable(rpms.ParmsDictionary, rpms.HookName);
            string jsonstr = Common.JsonHelper.DataTable2Json(dt);
            return Content(jsonstr);
            //return Json(jsonstr, JsonRequestBehavior.AllowGet);
        }
        public ActionResult GetTreeJson(HttpContextBase context)
        {
            Models.RequestParmModels rpms = new Models.RequestParmModels(context);
            rpms.HookName = DataAccessControl.DBProviderInstance((int)DataAccessControl.DBType.FAMS).GetStoreProcName(rpms.HookId);
           
            DataTable dt = DataAccessControl.DBProviderInstance(DBType).ExecStoreProcedureForGettingTable(rpms.ParmsDictionary, rpms.HookName);

string jsonstr = Common.JsonHelper.DataTable2TreeJson("0", 0,rpms.AttributeFields, dt);
            return Content(jsonstr);
            //return Json(jsonstr, JsonRequestBehavior.AllowGet);
        }
        public ActionResult GetTreeJson2(HttpContextBase context)
        {
            //Models.RequestParmModels rpms = new Models.RequestParmModels(context);
            //rpms.HookName = DataAccessControl.DBProviderInstance((int)DataAccessControl.DBType.FAMS).GetStoreProcName(rpms.HookId);
            Dictionary<string, object> dir = new Dictionary<string, object>();
            dir.Add("userno",""); //,
            List<string> list = new List<string>();
            list.Add("url");
            list.Add("orglevel");
            DataTable dt = DataAccessControl.DBProviderInstance(DBType).ExecStoreProcedureForGettingTable(dir, "fp_GetTreeDataSample");

string jsonstr = Common.JsonHelper.DataTable2TreeJson("0", 0, list, dt);
            return Content(jsonstr);
            //return Json(jsonstr, JsonRequestBehavior.AllowGet);
        }
        public ActionResult GetDSJson(HttpContextBase context)
        {
            Models.RequestParmModels rpms = new Models.RequestParmModels(context);
            rpms.HookName = DataAccessControl.DBProviderInstance((int)DataAccessControl.DBType.FAMS).GetStoreProcName(rpms.HookId);
            DataSet ds = DataAccessControl.DBProviderInstance(DBType).ExecStoredProcedure(rpms.ParmsDictionary, rpms.HookName);
            string jsonstr = Common.JsonHelper.DataSet2Json(ds);
            return Content(jsonstr);
        }
        /// <summary>
        /// 获取数据集JSon,含分页功能,easyui-datagrid 分页数据提供
        /// </summary>
        /// <returns></returns>
        public ActionResult GetPagerDSJson(HttpContextBase context)
        {
            Models.RequestParmModels rpms = new Models.RequestParmModels(context);
            rpms.HookName = DataAccessControl.DBProviderInstance((int)DataAccessControl.DBType.FAMS).GetStoreProcName(rpms.HookId);
            if (!rpms.ParmsDictionary.ContainsKey("@pageindex"))
            {
                rpms.ParmsDictionary["@pageindex"] = rpms.PageIndex;
            }
            if (!rpms.ParmsDictionary.ContainsKey("@pagesize"))
            {
                rpms.ParmsDictionary["@pagesize"] = rpms.PageSize;
            }
            DataSet ds = DataAccessControl.DBProviderInstance(DBType).ExecStoredProcedure(rpms.ParmsDictionary, rpms.HookName);
            string jsonstr = Common.JsonHelper.DataSet2JsonNew(ds);
            return Content(jsonstr);
        }

public ActionResult PostJson(HttpContextBase context)
        {
            Models.RequestParmModels rpms = new Models.RequestParmModels(context);
            rpms.HookName = DataAccessControl.DBProviderInstance((int)DataAccessControl.DBType.FAMS).GetStoreProcName(rpms.HookId);
            DataTable dt = DataAccessControl.DBProviderInstance(DBType).ExecStoreProcedureForGettingTable(rpms.ParmsDictionary, rpms.HookName);
            string jsonstr = Common.JsonHelper.DataTable2Json(dt);
            return Content(jsonstr);
            //return Json(jsonstr, JsonRequestBehavior.AllowGet);
        }
        public ActionResult ExportExcel(HttpContextBase context)
        {
             Models.RequestExportFileParmModels rpms = new Models.RequestExportFileParmModels(context);
            rpms.HookName = DataAccessControl.DBProviderInstance((int)DataAccessControl.DBType.FAMS).GetStoreProcName(rpms.HookId);
            DataTable dt = DataAccessControl.DBProviderInstance(DBType).ExecStoreProcedureForGettingTable(rpms.ParmsDictionary, rpms.HookName);
            //Common.NPOIHelper npoi = new Common.NPOIHelper();
            //Common.NPOIHelper.ExportByWeb(context, dt, rpms.HeaderText, rpms.ExportFileName);
            //FileContentResult fr = new FileContentResult(Common.NPOIHelper.Export(dt, rpms.HeaderText).GetBuffer(), "application/ms-excel");
            //return fr;
            string filename = rpms.ExportFileName;
            if (null == filename || filename == "") filename = System.DateTime.Now.ToFileTime().ToString();
            return File(Common.NPOIHelper.Export(dt, rpms.HeaderText).GetBuffer(), "application/ms-excel", filename+".xls");
            //return Json(jsonstr, JsonRequestBehavior.AllowGet);
        }
    }
}

时间: 2024-12-14 08:02:55

(四)Web应用开发---导出到Excel的相关文章

.NET开发工具之Excel导出公共类

最近接了一个任务,就是做一个列表的Excel导出功能.并且有很多页面都会使用这个功能. 导出的Excel大体格式如图 很简单的列表,标题加背景色,然后不同类型,显示方式不一样.对齐方式不一样.不同页面除了内容以外,大体形式都差不多. 当时本来是想直接用NPOI,IRow ICell.这样进行拼接页面,最简单也最方便. 但是很多页面,都进行这种类似的设计.我实在是懒得做这种重复功能.所以花了一点时间,整理了一下帮助类. 使用 做好这个帮助类以后只要进行两点调用 1.制作导出Excel的数据模型.这

Excel导出学习之道:Java Web利用POI导出Excel简单例子

采用Spring mvc架构: Controller层代码如下 [java] view plaincopy @Controller public class StudentExportController{ @Autowired private StudentExportService studentExportService; @RequestMapping(value = "/excel/export") public void exportExcel(HttpServletReq

web页面导出到Excel乱码解决

引言: 前几天 在做web项目的时候 需要导出页面上的数据 到Excel里面 但有的时候出现乱码(有de时候不出现 很奇怪) 原来的代码是这样的: HttpContext.Current.Response.Clear(); HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=FileName.xls"); HttpContext.Current.Resp

C#开发---利用特性自定义数据通用导出到Excel

网上C#导出Excel的方法有很多.但用来用去感觉不够自动化.于是花了点时间,利用特性做了个比较通用的导出方法.只需要根据实体类,自动导出想要的数据  1.在NuGet上安装Aspose.Cells或者用微软自带类库也可以  2.需要导出的数据的实例类: using System.ComponentModel; using System.Reflection; using System.Runtime.Serialization; public class OrderReport { [Disp

利用JasperReport+iReport进行Web报表开发

用JasperReport+iReport进行Web报表开发 序言 在非常多实际的项目里,报表都是当中十分重要的组成部分,比如把查询结果以报表的形式呈现出来.这里所提到的报表可不是简单的二维表,而是拥有复杂表头的.多维的.能够在执行期从数据库中自己主动读取数据.可自己主动分页.拥有丰富的页面元素(图片,超连接等).支持分组和交叉表.支持打印.最好还能导出到Excel或Word…...(汗L).可是显而易见,报表功能越强大,提供的服务越丰富,其复杂度也就越提高,所以仅靠石器时代的手工方式生成报表是

c#中数据从数据库到客户端主要几种的导出方式(导出到excel,导出到word)

本人大学新手一枚,在大学工作室学习asp.net,从中积累的一些小的知识和大家一起分享与讨论. 今天的主题是导出数据.现在从服务器端到客户端数据的几种主要方式有:web页面呈现(各种view..),导出到excel,导出到word,导出到报表等.我今天讲下我实际开发项目中用到的导出到excel和导出到word. 一.导出到excel 主要有以下两种方法: (1)用数据展示控件如GridView或者ListView等,先把需要导出的数据展示在web页面上,然后再利用Response的另存为功能,将

将datagrid中数据导出到excel中 -------&lt;&lt;工作日志2014-6-6&gt;&gt;

1.下载log4j jar包,放入lib目录, 导入项目中   下载地址 http://logging.apache.org/ 2.创建log4j.properties 文件  目录 Src  下面是一个 log4j.properties的例子(注:来源于网上,非本人所写) ################################################################################ # 其语法:log4j.rootLogger = [ leve

使用JasperReport+iReport进行Web报表开发

前言 在实际工程中非常,报告是其中很重要的一部分,结果以报表的形式呈现出来.这里所提到的报表可不是简单的二维表,而是拥有复杂表头的.多维的.能够在执行期从数据库中自己主动读取数据.可自己主动分页.拥有丰富的页面元素(图片.超连接等).支持分组和交叉表.支持打印.最好还能导出到Excel或Word…...(汗L). 可是显而易见,报表功能越强大,提供的服务越丰富,其复杂度也就越提高,所以仅靠石器时代的手工方式生成报表是不能满足须要的. 所幸,眼下我们所熟知的几款报表工具功能上足够强大,并且都附有非

几个深有体会的WEB前端开发工具[转]

几个深有体会的WEB前端开发工具[转] 转自http://blog.csdn.net/Haiwiky/archive/2008/10/19/3100287.aspx 一.介绍2款前端小工具[取色工具和量距离工具] 1.取色工具——TakeColor 2.量距离工具(像素) 介绍下载请参见:http://www.css88.com/article.asp?id=483 二.JavaScript调试器VenKman[firefox插件] 三.IE WebDeveloper V2.3.2.108:点击