• Ext.Net导出Excel


    最近项目结束了,其中用到了Ext.Net的GridPanel导出Excel,简单的过程如下:

    导出按钮的事件:

     1 protected void btnExport_DirectClick(object sender, DirectEventArgs e)
     2         {
     3             if (Session["BorrowRecord"] != null)
     4             {
     5                 DataTable tbBorrowRecord = (DataTable)Session["BorrowRecord"];
     6                 if (tbBorrowRecord.Rows.Count > 0)
     7                 {
     8                     string content = m_BorrowBLL.GetExportHtml(tbBorrowRecord); // 把DataTable表格转成HTML
     9                     string title = "工具借用记录导出" + DateTime.Now.ToString("yyyyMMddHHmmss");
    10                     Session["Content"] = content;
    11                     UIHelper.LogInfo("导出超修记录Exce", OperatorType.导出);
    12                     X.Redirect("/Ashx/LoadExcel.ashx?title=" + title);
    13                 }
    14                 else
    15                 {
    16                     // 没有数据,提示没有数据无法导出
    17                     Notification.Show(
    18                         new NotificationConfig
    19                         {
    20                             Title = "提示",
    21                             Icon = Icon.Information,
    22                             Html = "没有数据,无法导出!"
    23                         });
    24                 }
    25             }
    26         }
    View Code

    根据DataTable拼凑出Html table结构:

     1 /// <summary>
     2         /// 根据借用记录数据表格获取导出的HTML
     3         /// </summary>
     4         /// <param name="tbBorrowRecord"></param>
     5         /// <returns></returns>
     6         public string GetExportHtml(DataTable tbBorrowRecord)
     7         {
     8             tbBorrowRecord = tbBorrowRecord.DefaultView.ToTable(false, new string[] { "SectionName", "Category", "Model", "Code", "BorrowMan", "BorrowTime", "ReturnMan", "ReturnTime", "State" });
     9             string html = string.Empty;
    10             string datarow = string.Empty;
    11             foreach (DataRow drBorrow in tbBorrowRecord.Rows)
    12             {
    13                 string content = string.Empty; // 数据内容
    14                 datarow += "<tr>";
    15                 for (int i = 0; i < tbBorrowRecord.Columns.Count; i++)
    16                 {
    17                     if (tbBorrowRecord.Columns[i].ColumnName == "State")
    18                     {
    19                         switch (drBorrow[i].ToString())
    20                         {
    21                             case "1":
    22                                 content = "未归还";
    23                                 break;
    24                             case "2":
    25                                 content = "已归还";
    26                                 break;
    27                         }
    28                     }
    29                     else
    30                     {
    31                         content = drBorrow[i].ToString();
    32 
    33                     }
    34                     datarow += "<td>" + content + "</td>";
    35                 }
    36                 datarow += "</tr>";
    37             }
    38             html = string.Format(@"<html>
    39                                           <meta http-equiv='Content-Type' content='text/html;charset='utf-8' />
    40                                           <head></head>
    41                                           <body>
    42                                              <table style='border-collapse:collapse' bordercolor='#111111' cellSpacing='0' cellPadding='2' border='1'>
    43                                                 <thead>
    44                                                 <th>工区</th>
    45                                                 <th>工具类型</th>
    46                                                 <th>规格型号</th>
    47                                                 <th>条形码</th>
    48                                                 <th>借用人</th>
    49                                                 <th>借用日期</th>
    50                                                 <th>归还人</th>
    51                                                 <th>归还日期</th>
    52                                                 <th>状态</th>
    53                                                 </thead>
    54                                                 {0}
    55                                             </table>
    56                                           </body>
    57                                           </html>", datarow);
    58 
    59             return html;
    60         }
    View Code

    在一般处理程序中导出Excel

     1 using System.Web;
     2 
     3 namespace HuaweiSoftware.EMMS_JCW.UI.Ashx
     4 {
     5     /// <summary>
     6     /// 导出记录到Excel
     7     /// </summary>
     8     public class LoadExcel : IHttpHandler, System.Web.SessionState.IRequiresSessionState
     9     {
    10         public void ProcessRequest(HttpContext context)
    11         {
    12             string content = context.Session["content"].ToString();
    13             string title = context.Request["title"];
    14             context.Session.Remove("content");
    15 
    16             // 设置http流格式,写入拼接Excel内容
    17             context.Response.Clear();
    18             context.Response.Buffer = true;
    19             context.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(title) + ".xls");
    20             context.Response.ContentEncoding = System.Text.Encoding.UTF8;
    21             context.Response.ContentType = "application/vnd.ms-excel";
    22             context.Response.Write(content);
    23             context.Response.End();
    24         }
    25 
    26         public bool IsReusable
    27         {
    28             get
    29             {
    30                 return false;
    31             }
    32         }
    33     }
    34 }
    View Code
  • 相关阅读:
    链表重排 【模板题】
    链表的插入排序
    链表归并排序
    判断链表成环| 删除第K个节点【快慢指针】
    vue骨架屏制作
    前端常用的网站+插件
    点击canvas图片下载图片
    判断dom是否出现在可视区域
    canvas截取图片
    .如果在input上加上@keyup.enter.native,第一次回车时还是会刷新界面,在el-from上加上 @submit.native.prevent
  • 原文地址:https://www.cnblogs.com/hongyan5682/p/5075976.html
Copyright © 2020-2023  润新知