
C# asp.net 实现导出Excel
";// 自定义class样式string css = ".ftd{width:200px;}";// 调用this.ExportToExcel("demo.xls", content, css);
发布日期:2021-05-09 04:01:55
浏览次数:15
分类:博客文章
本文共 4209 字,大约阅读时间需要 14 分钟。
原文地址:
这段时间用到了导出Excel的功能,这个功能还是比较常用的,我常用的有两个方法,现在整理一下,方便以后查看。
1.实现DataTable数据导出到本地,需要自己传进去导出的路径。
////// DataTable导出到Excel/// /// DataTable类型的数据源/// 需要导出的文件路径public void dataTableToCsv(DataTable table, string file){ string title = ""; FileStream fs = new FileStream(file, FileMode.OpenOrCreate); StreamWriter sw = new StreamWriter(new BufferedStream(fs), System.Text.Encoding.Default); for (int i = 0; i < table.Columns.Count; i++) { title += table.Columns[i].ColumnName + "\t"; //栏位:自动跳到下一单元格 } title = title.Substring(0, title.Length - 1) + "\n"; sw.Write(title); foreach (DataRow row in table.Rows) { string line = ""; for (int i = 0; i < table.Columns.Count; i++) { line += row[i].ToString().Trim() + "\t"; //内容:自动跳到下一单元格 } line = line.Substring(0, line.Length - 1) + "\n"; sw.Write(line); } sw.Close(); fs.Close();}
2.实现DataTable数据导出到本地,路径可以由用户自主选择。
////// DataTable导出到Excel/// /// DataTable类型的数据源/// 文件类型/// 文件名public void CreateExcel(DataTable dt, string FileType, string FileName){ Response.Clear(); Response.Charset = "UTF-8"; Response.Buffer = true; Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); Response.AppendHeader("Content-Disposition", "attachment;filename=\"" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls\""); Response.ContentType = FileType; string colHeaders = string.Empty; string ls_item = string.Empty; DataRow[] myRow = dt.Select(); int i = 0; int cl = dt.Columns.Count; for (int j = 0; j < dt.Columns.Count; j++) { ls_item += dt.Columns[j].ColumnName + "\t"; //栏位:自动跳到下一单元格 } ls_item = ls_item.Substring(0, ls_item.Length - 1) + "\n"; foreach (DataRow row in myRow) { for (i = 0; i < cl; i++) { if (i == (cl - 1)) { ls_item += row[i].ToString() + "\n"; } else { ls_item += row[i].ToString() + "\t"; } } Response.Output.Write(ls_item); ls_item = string.Empty; } Response.Output.Flush(); Response.End();}
3.实现DataTable数据导出到本地,路径可以由用户自主选择,同时支持自定义Excel的样式,较为灵活。
////// 以流的形式,可以设置很丰富复杂的样式 /// /// Excel中内容(Table格式) /// 文件名 /// 样式内容 public void ExportToExcel(string filename, string content, string cssText) { var res = HttpContext.Current.Response; content = string.Format("{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("GB2312"); res.ContentType = "application/ms-excel;charset=UTF-8"; res.Write(content); res.Flush(); res.End(); }
方法的调用
第一种方法的调用:
this.dataTableToCsv(dt, @"C:\Users\Admin\Desktop\收听率" + DateTime.Now.ToString("yyyy-MM-dd HHmmss") + ".xls"); //调用函数
第二种方法的调用:
CreateExcel(dt, "application/ms-excel", "Excel" + DateTime.Now.ToString("yyyy-MM-dd HHmmss") + ".xls");//调用函数
第三种方法的调用:
// 数据源,html格式tablestring content = "
字段1 |
这三种方法都是可以直接调用的,只需要传入需要的参数即可。
如果是通过前台js方式实现,跳转href为实现数据导出的页面地址,我是通过前台跳转到ashx页面实现的
ashx页面内容
public void ProcessRequest(HttpContext context) {string message = ""; string Action = context.Request["Action"]; switch (Action) {case "Excel": DataTable Radio = GetExcleData(context); //获取导出数据源 RadioCommon helper = new RadioCommon(); helper.ExportExcel(Radio, "application/ms-excel", "Excel" + DateTime.Now.ToString("yyyy-MM-dd HHmmss")); break; } context.Response.Write(message); }
js部分内容
$("#Excel").bind('click', function () { var url = "AjaxHandler/RadioFamilyDayNumber.ashx?Action=Excel"; window.location.href = url;//导出Excel })
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月18日 09时42分38秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【Python】(十二)IO 文件处理
2019-03-05
【Oozie】(三)Oozie 使用实战教学,带你快速上手!
2019-03-05
C语言的数值溢出问题(上)
2019-03-05
vue项目通过vue.config.js配置文件进行proxy反向代理跨域
2019-03-05
android:使用audiotrack 类播放wav文件
2019-03-05
ACM/NCPC2016 C Card Hand Sorting(upc 3028)
2019-03-05
SLAM学习笔记-求解视觉SLAM问题
2019-03-05
程序员应该知道的97件事
2019-03-05
shell编程(六)语言编码规范之(变量)
2019-03-05
vimscript学习笔记(二)预备知识
2019-03-05
Android数据库
2019-03-05
HTML基础,块级元素/行内元素/行内块元素辨析【2分钟掌握】
2019-03-05
23种设计模式一:单例模式
2019-03-05
spring启动错误:Could not resolve placeholder
2019-03-05
invalid byte sequence for encoding
2019-03-05
技术美术面试问题整理
2019-03-05
ORB-SLAM2:LoopClosing线程学习随笔【李哈哈:看看总有收获篇】
2019-03-05
js求阶乘
2019-03-05