多语言展示
当前在线:1412今日阅读:91今日分享:37

asp.net+js+ashx如何实现数据导出(EXCEL)

现在很多bs或者cs架构的系统中都涉及到了对数据的导出功能,那么,如何才能顺利的导出excel表格呢?
方法/步骤
1

导出这句代码是页面中添加了一个导出按钮

2

在js中写一下代码,表示在当 DOM(文档对象模型) 已经加载,并且页面(包括图像)已经完全呈现时,会发生 ready 事件。由于该事件在文档就绪后发生。因此我们,因此把所有其他的 jQuery 事件和函数置于该事件中。例如导出;$(document).ready(function () {//当导出这个链接触发时,我们执行ReportExcel()方法  $('#btnReport').bind('click', function () {        ReportExcel();    });})

4

这里是一般处理程序的代码 string connStr = string.Empty;        string msg = string.Empty;        public void ProcessRequest(HttpContext context)        {            context.Response.ContentType = 'text/plain';            try            {                try                {                    connStr = context.Session['connStr'].ToString();                }                catch (Exception)                {                    throw new Exception('timeout');                }                string ajax = context.Request['a'];                switch (ajax)                {                                        case '1':                        msg = Export(context);                        break;                }            }            catch (Exception ex)            {                msg = StringPlus.ToOpResult(false, ex.Message);            }            context.Response.Write(msg);            context.Response.End();        }private string Export(HttpContext context)        {            try            {                string ogk01 = context.Request['ogk01'] ?? '';                string ogk02 = context.Request['ogk02'] ?? '';                string ogk14 = context.Request['ogk14'] ?? '';                OgkFileBll bll = new OgkFileBll();                DataTable excelDt = bll.Export(connStr, ogk01, ogk02, ogk14);                string fileName = userID.Trim() + DateTime.Now.ToString('yyyyMMddHHmmssffff') + '.xls';                DataToExcel dte = new DataToExcel();                string filePath = '/sendlog/downLoad/' + fileName;                string strHtml = dte.DtToHtml(excelDt);                File.WriteAllText(context.Server.MapPath(filePath), strHtml);                msg = StringPlus.ToOpResult(true, filePath);            }            catch (Exception ex)            {                msg = StringPlus.ToOpResult(false, ex.Message);            }            return msg;        }

5

这一段是比较重要的,它主要是把获取到的表数据转换为Excel输出,因为我们的目的就是把表数据导出Excel  ///

        /// DataTable 转换为Excel输出        ///         ///         ///         public string DtToHtml(DataTable dt)        {            StringBuilder sb = new StringBuilder();            if (dt != null)            {  //生成标签                sb.Append('');                //生成标题列                sb.Append('');                foreach (DataColumn dc in dt.Columns)                {                    sb.Append('');                }                sb.Append('
' + dc + '
');            }            if (dt != null && dt.Rows.Count > 0)            {                //生成內容                sb.Append('');                foreach (DataRow dr in dt.Rows)                {                    sb.Append('');                    for (var i = 0; i < dt.Columns.Count; i++)                    {                        sb.Append('');                    }                    sb.Append('');                }                sb.Append('
' + Convert.ToString(dr[i]).Trim() + '
');            }            return sb.ToString();        }

6

接下来就是关于业务逻辑层和数据访问层的编写了。这些靠自己了。只要实现第四步中的一下代码DataTable excelDt = bll.Export(connStr, ogk01, ogk02, ogk14);获取到excelDt(也就是表数据)就OK了

推荐信息