asp.net以流导出Excel
废话不多说,直接上代码
这是点击导出的事件函数,因为我是从前端获取的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的更多相关文章
- ASP.NET Core 导入导出Excel xlsx 文件
ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Li ...
- ASP.NET Core导入导出Excel文件
ASP.NET Core导入导出Excel文件 希望在ASP.NET Core中导入导出Excel文件,在网上搜了一遍,基本都是使用EPPlus插件,EPPlus挺好用,但商用需要授权,各位码友若有好 ...
- Asp.Net 使用Npoi导出Excel
引言 使用Npoi导出Excel 服务器可以不装任何office组件,昨天在做一个导出时用到Npoi导出Excel,而且所导Excel也符合规范,打开时不会有任何文件损坏之类的提示.但是在做导入时还是 ...
- ASP如何将table导出EXCEL表格
网页导出excel表格非常常用,对于一些加载<table>的数据网页,经常会用到这种功能,下面和大家分享一下ASP如何导出EXCEL表格 工具/原料 ASP编辑器 方法/步骤 ...
- asp.net 控件 导出 excel
//导出EXCEL protected void btnDaoChu_Click(object sender, EventArgs e) { HttpContext.Current.Response. ...
- asp.net webform/mvc导出Excel通用代码
最近将自己在项目中经常用到的excel导出方法分析如下,如有不妥之处望他人指出,如果有更好的方法希望展示出来互相学习. //导出事件 protected void btnexcel_Click(obj ...
- Asp.net MVC NPOI导出Excel
public class NpoiMemoryStream : MemoryStream { public NpoiMemoryStream() { AllowClose = true; } publ ...
- asp.net——XML格式导出Excel
下面介绍一种导出Excel的方法: 此方法不需要在服务器上安装Excel,采用生成xml以excel方式输出到客户端,可能需要客户机安装excel,所以也不会有乱七八糟的权限设定,和莫名其妙的版本问题 ...
- 【ASP.NET】DataTable导出EXCEL,弹窗提示下载保存(完整代码)
//新建ASPX protected void Page_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); Data ...
随机推荐
- Halcon一日一练:读取文件目录图像的三种方法
第一种方法: 读了一个单一图像: read_image(Image,'fabrik') 这种方式可以快速的读取软件自身携带的库图像文件,系统设定了库图像映像文件的快速读取方式,我们也可以通过绝对地址的 ...
- 《Java并发编程实战》读书笔记-第一部分 基础知识小结
并发技巧清单 可变状态是至关重要的 所有的并发问题都可以归结为如何协调对并发状态的访问.可变状态越少,就越容易确保线程安全性. 尽量将域声明为final类型,除非需要它们是可变的. 不可变对象一定是线 ...
- 玩转OneNET物联网平台之MQTT服务⑤ —— OneNet智能灯+MVP框架
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- 百万年薪python之路 -- 面向对象之三大特性
1.面向对象之三大特性 1.1封装 封装:就是把一堆代码和数据,放在一个空间,并且可以使用 对于面向对象的封装来说,其实就是使用构造方法将内容封装到 对象 中,然后通过对象直接或者self间接获取被封 ...
- JS移动端适配(自适应)
var html = document.querySelector('html'); changeRem(); window.addEventListener('resize', changeRem) ...
- PHP Windows下使用Memcached扩展
github上发现了一个很好用的小文件,能够 模拟出php_memcached.dll的PHP memcached扩展. PHP memcached client 已知PCEL有两个memcache ...
- 小白学 Python(13):基础数据结构(字典)(下)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- day03课堂练习
简述变量的组成 变量由变量名,赋值符号,和变量值三个部分组成 简述变量名的命名规范 a.变量名必须有意义,要能反映变量值所描述的状态 b.变量名以字母.数字和下划线组成,不能用数字开头 c.不能以关键 ...
- 按钮组件.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- JavaScript数据在内存中储存方式
详情来源于个本人博客: https://shengchangwei.github.io/al-data/ > Js的数据类型包括两种: 基本数据类型:String.Boolean.Number. ...