废话不多说,直接上代码

这是点击导出的事件函数,因为我是从前端获取的Table的json数据,所以需要转换一下,大家直接用查询出来的DataTable即可

         protected void bt_export_ServerClick(object sender, EventArgs e)
{
DataTable dt = updateInfo(datajson.Value);//将json数据转为DataTable
string content = getExcelContent(dt);
string css = ".setwidth{width:200px;}";//表格的样式,可自定义
string filename = DateTime.Now.ToString("yyyyMMddHHmmssfffff") + ".xls"; ExportToExcel(filename, content, css);//调用函数
}

然后是转换为DataTable

  public DataTable getDataTable()
{
DataTable dt = new DataTable();
dt.Columns.Add("订单号", typeof(System.String));
dt.Columns.Add("提现时间", typeof(System.String));
dt.Columns.Add("提现人姓名", typeof(System.String));
dt.Columns.Add("提现人手机号码", typeof(System.String));
dt.Columns.Add("提现卡号", typeof(System.String));
dt.Columns.Add("提现银行", typeof(System.String));
dt.Columns.Add("账户余额", typeof(System.String));
dt.Columns.Add("提现金额", typeof(System.String));
dt.Columns.Add("手续费", typeof(System.String));
dt.Columns.Add("当前状态", typeof(System.String));
return dt;
} /// <summary>
/// json转换为DataTable
/// </summary>
/// <param name="json">需要转化的json格式字符串</param>
/// <returns></returns>
public DataTable updateInfo(string json)
{
DataTable dt = getDataTable();
System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer();
if (!string.IsNullOrEmpty(json))
{
object[] obj = (object[])jss.DeserializeObject(json);
Dictionary<string, object> dic;
DataRow dr;
foreach (object _obj in obj)
{
dr = dt.NewRow();
dt.Rows.Add(dr);
dic = (Dictionary<string, object>)_obj;
dr["订单号"] = dic["orderid"];
dr["提现时间"] = dic["createtime"];
dr["提现人姓名"] = dic["cname"];
dr["提现人手机号码"] = dic["cphone"];
dr["提现卡号"] = dic["cno"];
dr["提现银行"] = dic["cbkname"];
dr["账户余额"] = dic["userye"];
dr["提现金额"] = dic["ofee"];
dr["手续费"] = dic["sxfee"];
string status = "";
switch (dic["ostatus"].ToString())
{
case "":
status = "审核拒绝";
break;
case "":
status = "放款成功";
break;
case "":
status = "待审核";
break;
case "":
status = "审核通过";
break;
case "":
status = "放款失败";
break;
}
dr["当前状态"] = status;
}
}
return dt;
}

最后是实现流导出Excel

         private string getExcelContent(DataTable dt)
{
StringBuilder sb = new StringBuilder(); sb.Append("<table borderColor='black' border='1' >");
sb.Append("<thead><tr>");
/*for (int j = 0; j < dt.Columns.Count; j++)
{
sb.Append("<th class='setwidth' bgColor='#ccfefe'>" + dt.Columns[j].ColumnName + "</th>");
}*/
sb.Append("<th style='width:150px;' bgColor='#ccfefe'>订单号</th>");
sb.Append("<th style='width:110px;' bgColor='#ccfefe'>提现时间</th>");
sb.Append("<th style='width:80px;' bgColor='#ccfefe'>提现人姓名</th>");
sb.Append("<th style='width:110px;' bgColor='#ccfefe'>提现人手机号</th>");
sb.Append("<th style='width:140px;' bgColor='#ccfefe'>提现卡号</th>");
sb.Append("<th style='width:110px;' bgColor='#ccfefe'>提现银行</th>");
sb.Append("<th style='width:80px;' bgColor='#ccfefe'>账户余额</th>");
sb.Append("<th style='width:80px;' bgColor='#ccfefe'>提现金额</th>");
sb.Append("<th style='width:80px;' bgColor='#ccfefe'>手续费</th>");
sb.Append("<th style='width:70px;' bgColor='#ccfefe'>当前状态</th>");
sb.Append("</tr></thead>");
sb.Append("<tbody>");
DataRow[] myRow = dt.Select();
int i = ;
int cl = dt.Columns.Count;
foreach (DataRow row in myRow)
{
sb.Append("<tr>");
for (i = ; i < cl; i++)
{
if (i == || i == )
{//在Excel中以文本的格式显示
sb.Append("<td style=\"vnd.ms-excel.numberformat:@\">" + row[i].ToString() + "</td>");
}
else
{
sb.Append("<td>" + row[i].ToString() + "</td>");
}
}
sb.Append("</tr>");
}
sb.Append("</tbody></table>");
return sb.ToString();
} /// <summary>
/// 以流的形式,可以设置很丰富复杂的样式
/// </summary>
/// <param name="content">Excel中内容(Table格式)</param>
/// <param name="filename">文件名</param>
/// <param name="cssText">样式内容</param>
public static void ExportToExcel(string filename, string content, string cssText)
{
var res = HttpContext.Current.Response;
content = String.Format("<style type='text/css'>{0}</style>{1}", cssText, content); res.Clear();
res.Buffer = true;
res.Charset = "UTF-8";
res.AddHeader("Content-Disposition", "attachment; filename=" + filename);
res.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
res.ContentType = "application/ms-excel;charset=UTF-8";
res.Write(content);
res.Flush();
res.End();
}

在这里有个重点需要注意下,就是Excel的单元格格式

在这个时候,需要将数字格式转换为文本格式,也就是上面的代码块里的  style=\"vnd.ms-excel.numberformat:@\"

OK,至此,以流导出Excel便完成了,大家如果有什么意见,可以在下面留言,博主看到会回复大家的

asp.net以流导出Excel的更多相关文章

  1. ASP.NET Core 导入导出Excel xlsx 文件

    ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Li ...

  2. ASP.NET Core导入导出Excel文件

    ASP.NET Core导入导出Excel文件 希望在ASP.NET Core中导入导出Excel文件,在网上搜了一遍,基本都是使用EPPlus插件,EPPlus挺好用,但商用需要授权,各位码友若有好 ...

  3. Asp.Net 使用Npoi导出Excel

    引言 使用Npoi导出Excel 服务器可以不装任何office组件,昨天在做一个导出时用到Npoi导出Excel,而且所导Excel也符合规范,打开时不会有任何文件损坏之类的提示.但是在做导入时还是 ...

  4. ASP如何将table导出EXCEL表格

    网页导出excel表格非常常用,对于一些加载<table>的数据网页,经常会用到这种功能,下面和大家分享一下ASP如何导出EXCEL表格 工具/原料   ASP编辑器 方法/步骤     ...

  5. asp.net 控件 导出 excel

    //导出EXCEL protected void btnDaoChu_Click(object sender, EventArgs e) { HttpContext.Current.Response. ...

  6. asp.net webform/mvc导出Excel通用代码

    最近将自己在项目中经常用到的excel导出方法分析如下,如有不妥之处望他人指出,如果有更好的方法希望展示出来互相学习. //导出事件 protected void btnexcel_Click(obj ...

  7. Asp.net MVC NPOI导出Excel

    public class NpoiMemoryStream : MemoryStream { public NpoiMemoryStream() { AllowClose = true; } publ ...

  8. asp.net——XML格式导出Excel

    下面介绍一种导出Excel的方法: 此方法不需要在服务器上安装Excel,采用生成xml以excel方式输出到客户端,可能需要客户机安装excel,所以也不会有乱七八糟的权限设定,和莫名其妙的版本问题 ...

  9. 【ASP.NET】DataTable导出EXCEL,弹窗提示下载保存(完整代码)

    //新建ASPX protected void Page_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); Data ...

随机推荐

  1. win server 2008R2 安装telnet 在VM虚拟机中

    服务器端: 第一步:  安装telnet 先固定,ip地址,因为虚拟机之间通信需要同网段,所以先固定ip, 第二步: 服务管理器>功能>添加功能 >服务器上安装服务器端telnet ...

  2. css的简单使用

    css语法 id选择器: id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式. HTML元素以id属性来设置id选择器,CSS 中 id 选择器以 "#" 来定义. ...

  3. python学习-类的继承

    1.继承的语法 2.多继承 3.override(子类重写父类的方法) 4.子类调用父类中被重写的实例方法 5.使用super函数调用父类的构造方法

  4. 如何在CentOS6.4系统上安装KVM虚拟机

    CentOS6.4系统上安装KVM虚拟机   备注:以下操作说明是经过实验验证后总结出来的笔录,有需要的朋友可以进行参考,以下是基于VMware12.5.2虚拟机版本上安装的实验环境. 一.安装KVM ...

  5. 4、OGNL与值栈

    一.OGNL 1.什么是OGNL 对象导航图语言(Object Graph Navigation Language),简称OGNL,是应用于Java中的一个开源的表达式语言(Expression La ...

  6. 【Leetcode 做题学算法周刊】第一期

    首发于微信公众号<前端成长记>,写于 2019.10.28 背景 本文记录刷题过程中的整个思考过程,以供参考.主要内容涵盖: 题目分析设想 编写代码验证 查阅他人解法 思考总结 目录 1. ...

  7. 用深度优先搜索(DFS)解决多数图论问题

    前言 本文大概是作者对图论大部分内容的分析和总结吧,\(\text{OI}\)和语文能力有限,且部分说明和推导可能有错误和不足,希望能指出. 创作本文是为了提供彼此学习交流的机会,也算是作者在忙碌的中 ...

  8. 微信小程序和微信小程序之间的跳转和传参示例代码附讲解

    一:微信小程序跳转 使用限制 需要用户触发跳转 从 2.3.0 版本开始,若用户未点击小程序页面任意位置,则开发者将无法调用此接口自动跳转至其他小程序. 需要用户确认跳转 从 2.3.0 版本开始,在 ...

  9. 轻量级CNN模型之squeezenet

    SqueezeNet 论文地址:https://arxiv.org/abs/1602.07360 和别的轻量级模型一样,模型的设计目标就是在保证精度的情况下尽量减少模型参数.核心是论文提出的一种叫&q ...

  10. Day 3,学习的知识点

    年龄 如何判断是否未成年人 age = input('请输入你的年龄:')#input=输入age = int(age)#int=转化为整型if age < 18:    print('小妹妹你 ...