ashx导出dataTable为Excel
一,datatable导出Excel,用户可以选择路径,方法如下:
/// <summary>
/// DataTable导出到Excel
/// </summary>
/// <param name="dt">DataTable类型的数据源</param>
/// <param name="FileName">文件名</param>
/// <param name="httpContext">httpcontext</param>
public void CreateExcel(DataTable dt, string FileName, HttpContext httpContext)
{
httpContext.Response.Clear();
httpContext.Response.Charset = "UTF-8";
httpContext.Response.Buffer = true;
httpContext.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
httpContext.Response.AppendHeader("Content-Disposition", "attachment;filename=\"" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls\"");
httpContext.Response.ContentType = "application/ms-excel";
string colHeaders = string.Empty;
string ls_item = string.Empty;
DataRow[] myRow = dt.Select();
int i = ;
int cl = dt.Columns.Count;
for (int j = ; j < dt.Columns.Count; j++)
{
ls_item += dt.Columns[j].ColumnName + "\t"; //栏位:自动跳到下一单元格
}
ls_item = ls_item.Substring(, ls_item.Length - ) + "\n";
foreach (DataRow row in myRow)
{
for (i = ; i < cl; i++)
{
if (i == (cl - ))
{
ls_item += row[i].ToString() + "\n";
}
else
{
ls_item += row[i].ToString() + "\t";
}
}
httpContext.Response.Output.Write(ls_item);
ls_item = string.Empty;
}
httpContext.Response.Output.Flush();
httpContext.Response.End();
}
前端页面调用方法如下:
<a href="Import.ashx" >导出Excel</a>
二,datatable导出Excel,保存到服务器上。方法如下:
/// <summary>
/// DataTable导出到Excel
/// </summary>
/// <param name="table">DataTable类型的数据源</param>
/// <param name="file">需要导出的文件路径</param>
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();
}
前端调用方法:
<a onclick="Import()">导出Excel</a>
function Import() {
$.post("Import.ashx", {}, function (data) {
alert("导出成功");
});
}
ashx导出dataTable为Excel的更多相关文章
- 简洁的导出 datatable到excel,不用组件
简洁的导出 datatable到excel var lines = new List<string>(); string[] columnNames = dataTable.Columns ...
- 使用NPOI导出DataTable到Excel
使用C#对DataTable导出到Excel是我们工作当中比较多用到的场景,微软提供了Microsoft.Office.Interop.Excel组件可以进行操作,但是该组件在数据量大的时候速度很慢, ...
- ClosedXML、DocumentFormat.OpenXml导出DataTable到Excel
在很多系统中都用到导出,使用过多种导出方式,觉得ClosedXML插件的导出简单又方便. 并且ClosedXML.DocumentFormat.OpenXml都是MIT开源. 首先通过 Nuget 安 ...
- NPOI通过DataTable导出和读取Excel
Excel导入及导出问题产生: 从接触.net到现在一直在维护一个DataTable导出到Excel的类,时不时还会维护一个导入类.以下是时不时就会出现的问题: 导出问题: 如果是asp.net,你得 ...
- 从DataTable高效率导出数据到Excel
首先从数据库读取数据到DataTable,这我就不提了,大家都明白.下面直接介绍如何从DataTable高效率导出数据到Excel中的方法,代码如下: using Microsoft.Office.I ...
- 使用Aspose将DataTable转Excel
0.准备工作 1.下载并引入Aspose.Cells 下载Aspose Cells并引入using Aspose.Cells 下面示例中用的是.net 3.0版本的Aspose Cells,编译环 ...
- 1.ASP.NET MVC使用EPPlus,导出数据到Excel中
好久没写博客了,今天特地来更新一下,今天我们要学习的是如何导出数据到Excel文件中,这里我使用的是免费开源的Epplus组件. 源代码下载:https://github.com/caofangshe ...
- 导出数据到Excel --使用ExcelReport有感
先看图,这是几个月前用NPOI写的导出数据到Excel,用了上百行代码,而且难控制,导出来也比较难看 excel打开的效果 下面是我用ExcelReport类库导出到Excel的操作 1.首先引用Ex ...
- 使用Open xml 操作Excel系列之二--从data table导出数据到Excel
由于Excel中提供了透视表PivotTable,许多项目都使用它来作为数据分析报表. 在有些情况下,我们需要在Excel中设计好模板,包括数据源表,透视表等, 当数据导入到数据源表时,自动更新透视表 ...
随机推荐
- CentOS 7 Sersync+Rsync 实现数据文件实时同步
rsync+inotify-tools与rsync+sersync架构的区别? 1.rsync+inotify-tools inotify只能记录下被监听的目录发生了变化(增,删,改)并没有把具体是哪 ...
- 我所知道的JavaScript中判断数据类型
相信一提到怎么判断js的数据类型,大家都会想到的是typeof.instanceof,那么为什么有了typeof的存在还要有instanceof? typeof? 根据MDN:typeof操作符返回一 ...
- window xshell 连接本地ubuntu虚拟机
先设置VMware 虚拟机的连接属性 1.桥接,利用真实网卡 设置和window 同一个网段就可以直接通信 2.hostnoly是通过vm8(查看你的所有网络连接) 只能和主机联系 设置和vm8同一 ...
- JS 画框操作
Js中,我们有时候需要对图片进行操作,包括画框,其实对于UI前端来说挺简单的,没有网上说的那样复杂,这里说明一下 <div style="width:80%;height:300px; ...
- laravel 自动加载 自定义的文件/辅助函数
需求 在 laravel 中自定义了一些 辅助函数,想要laravel框架自动加载这些函数 实现 将自定义的辅助函数放在helpers.php文件中,如下: 在compsoer.json 的 auto ...
- liunx驱动----按键中断
liunx 中断 先设置异常入口 异常向量 void __init trap_init(void) 构造了异常向量 vector_irq+offset 按下按键: cpu自动进入异常模式 ...
- Global.asax
ASP.NET Global.asax 文件使用方法 - .net 标签: asp.net.netapplicationauthenticationsessionobjec ...
- tomcat1(servlet,http,socket)
1.servlet容器是如何工作的? a.创建一个request对象,用可能会在调用的Servlet中使用到的信息填充该request对象(参数,头,cookies,查询字符串,URI等).reque ...
- Linux的邮件服务器配置
一.邮件服务简介 1.电子邮件服务是Interne上最基本的服务之一,进入互联网的用户不需要任何纸张就可以方便地使用电子邮件来收发邮件 2.Internet上的电子邮件服务都是基于客户/服务器模式的 ...
- 深入理解泛型之JAVA泛型的继承和实现、泛型擦除
很多的基础类设计会采用泛型模式,有些应用在使用的时候处于隔离考虑,会进行继承,此时子类如何继承泛型类就很讲究了,有些情况下需要类型擦除,有些情况下不需要类型擦除,但是大多数情况下,我们需要的是保留父类 ...