asp.net导出Excel的方法

ASP.NET实现数据与图片到Excel的高效导出方法 在信息系统中,经常需要将数据导出Excel文件以供用户分析或存档。ASP.NET作为一种广泛使用的Web开发框架,其处理数据导出任务的能力不可或缺。使用ASP.NET导出数据到Excel文件,可以提高数据处理效率,增强用户交互体验。Microsoft Office的Interop服务提供了一种方式,让开发人员可以利用.NET来控制Office应用程序,如Word、Excel、PowerPoint等。在开发环境中使用Excel Interop,首先需要在开发机器上安装Microsoft Office。 阅读详情

Asp.net导出excel的我认为好的方法:

前提条件:

using System.Data.SqlClient;    //SqlConnection 用到这个命名空间
using System.Data;                    //DataSet 用到这个命名空间
using System.IO;                        //FileStream 用到这个命名空间

 

方法一:导出到csv文件,存放在服务器端任一路径,然后给客户下载

优点:
1、可以进行身份认证后给客户下载,如果放到非web目录就没有对应的url,客户无法随时下载。
2、也是因为生成了文件,所以占用了服务器的空间,但是可以把文件名存放到数据库,再次给客户下载的时候不需要重复生成文件。
3、csv文件是文本文件,逗号隔开字段,回车隔开行,易于数据导入导出。

实现方法:
 
  SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
   SqlDataAdapter da=new SqlDataAdapter("select * from tb1",conn);
   DataSet ds=new DataSet();
   da.Fill(ds,"table1");
   DataTable dt=ds.Tables["table1"];
   string name=System.Configuration.ConfigurationSettings.AppSettings["downloadurl"].ToString()+DateTime.Today.ToString("yyyyMMdd")+new Random(DateTime.Now.Millisecond).Next(10000).ToString()+".csv";//存放到web.config中downloadurl指定的路径,文件格式为当前日期+4位随机数
   FileStream fs=new FileStream(name,FileMode.Create,FileAccess.Write);
   StreamWriter sw=new StreamWriter(fs,System.Text.Encoding.GetEncoding("gb2312"));
   sw.WriteLine("自动编号,姓名,年龄");
   foreach(DataRow dr in dt.Rows)
   {
    sw.WriteLine(dr["ID"]+","+dr["vName"]+","+dr["iAge"]);
   }
   sw.Close();
   Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(name));
   Response.ContentType = "application/ms-excel";// 指定返回的是一个不能被客户端读取的流,必须被下载
   Response.WriteFile(name); // 把文件流发送到客户端
   Response.End();

方法二:导出到csv文件,不存放到服务器,直接给浏览器输出文件流

优点:
1、随时生成,不需要占用资源
2、可以结合身份认证
3、同样利于数据交换

实现方法:
SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
   SqlDataAdapter da=new SqlDataAdapter("select * from tb1",conn);
   DataSet ds=new DataSet();
   da.Fill(ds,"table1");
   DataTable dt=ds.Tables["table1"];
   StringWriter sw=new StringWriter();
   sw.WriteLine("自动编号,姓名,年龄");
   foreach(DataRow dr in dt.Rows)
   {
    sw.WriteLine(dr["ID"]+","+dr["vName"]+","+dr["iAge"]);
   }
   sw.Close();
   Response.AddHeader("Content-Disposition", "attachment; filename=test.csv");
   Response.ContentType = "application/ms-excel";
   Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
   Response.Write(sw);
   Response.End();

对方法一,二补充一点,如果你希望导出的是xls文件分隔符用\t就可以了,不要用逗号

代码修改如下:
sw.WriteLine("自动编号\t姓名\t年龄");
   foreach(DataRow dr in dt.Rows)
   {
    sw.WriteLine(dr["ID"]+"\t"+dr["vName"]+"\t"+dr["iAge"]);
   }
另外,修改输出的文件扩展名为xls即可。


方法三:从datagrid导出html代码,生成excel文件,给客户端下载

优点:
1、有固定的格式,样子好看(datagrid的样子)

局限性:
1、不适合数据交换,里面有html代码,比较乱,没有固定格式
2、datagrid不能有分页、排序等,否则出错

实现方法:
Response.Clear();
   Response.Buffer= false;
   Response.Charset="GB2312";
   Response.AppendHeader("Content-Disposition","attachment;filename=test.xls");
   Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");    Response.ContentType = "application/ms-excel";    this.EnableViewState = false;
   System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
   System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
   this.DataGrid1.RenderControl(oHtmlTextWriter);
   Response.Write(oStringWriter.ToString());
   Response.End();

 

在这里说明一点:有的网友反映代码出现“没有dr["id"]”之类的错误,这个代码是按照我的数据结构来写的,到时候相关的字段要换成你自己的才是。

还有就是如果文件名需要中文的话,这么修改Response.AddHeader("Content-Disposition", "attachment; filename="+System.Web.HttpUtility.UrlEncode("中文",System.Text.Encoding.UTF8)+".xls"); 

 
我的写法:
 

public void getExcel(string mdDanHao)
    {
        string sqlconn = ConfigurationManager.ConnectionStrings["ErpConnectionString"].ConnectionString;
        SqlConnection conn = new SqlConnection(sqlconn);
        conn.Open();
        string sqlText = "exec duojieyongliang '" + mdDanHao + "'";
        SqlDataAdapter ada = new SqlDataAdapter(sqlText, conn);
        DataSet ds = new DataSet();

        ada.Fill(ds, "duojieyongliang9");

        DataTable tablex = ds.Tables["duojieyongliang9"];
        /////////////////////////////////////////


        StringWriter sw = new StringWriter();
        sw.WriteLine("上级主件品号,版本,序号,元件品号,组成用量,底数,损耗率,工艺,取替代料,生效日期,失效日期,默认选择,标准成本计算,备注,材料类型,标准批量,工单单别,备注2,品名,规格,库存单位,主要仓库,低阶码,主供应商,主供应商2,品号属性");
        foreach (DataRow dr in tablex.Rows)
        {
            sw.WriteLine(dr[0] + "," + dr[1] + "," + dr[2] + "," + dr[3] + "," + dr[4] + "," + dr[5] + "," + dr[6] + "," + dr[7] + "," + dr[8] + "," + dr[9] + "," + dr[10] + "," + dr[11] + "," + dr[12] + "," + dr[13] + "," + dr[14] + "," + dr[15] + "," + dr[16] + "," + dr[17] + "," + dr[18] + "," + dr[19] + "," + dr[20] + "," + dr[21] + "," + dr[22] + "," + dr[23] + "," + dr[24] + "," + dr[25]);
        }
        sw.Close();
        Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("多阶用量清单带供应商", System.Text.Encoding.UTF8) + ".csv");
        Response.ContentType = "application/ms-excel";
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
        Response.Write(sw);

        conn.Close();
        ds.Dispose();
        ds.Clear();

        Response.End();


        //////////////////////////////////////////////
    }


asp.net+Ajax实现Excel文件导出 asp.net+Ajax,实现Excel文件导出 立即下载

相关推荐

ASP.NET导出EXCEL超高兼容

网上的代码基本都是不能兼容的,一旦在EXCEL2007打开,就会提示扩张名不一致问题,自己研究了好久,封装了一套,希望能帮到有需要的人,绝对能用

asp.net生成Excel导出下载五种实现方法

有关Excel下载的文章网上想必有很多,利用闲暇时间整理了一些有Excel下载方法的文章,接下来介绍五种实现Excel下载的方法,感兴趣的朋友可以了解下,或许对你学习Excel下载有所帮助

asp.net 导入excel到数据库中的示例

一个简单的 asp.net 导入excel到数据库中的示例。欢迎下载!

[转]asp.net导出数据到Excel的三种方法

原文出处:asp.net导出数据到Excel的几种方法(1/3) 、asp.net导出数据到Excel的几种方法(2/3)、asp.net导出数据到Excel的几种方法(3/3) asp.net导出Excel也是个老生常谈的问题,在此归纳一下。 第一种是比较常用的方法。是利用控件的RenderControl功能,得到该控件生成的HTML,然后以Excel文件的类型输出到客户端。这种方法...

weixin_30741653的博客 426

【译】Asp.Net 导出 Excel 数据的9种方案

简介 Excel 的强大之处在于它不仅仅只能打开Excel格式的文档,它还能打开CSV格式、Tab格式、website table 等多钟格式的文档。它具备自动识别行号,字符,格式化数字等功能,例如:如果你在Excel 单元格中输入数字 "123456789012" 会自动转化为"1.23457E+11"。 背景介绍 正因为Excel的强大和易用,大家都喜欢将数据导出Excel 备用。这...

weixin_30387423的博客 550

asp.net导出数据到Excel的三种方法

asp.net导出Excel也是个老生常谈的问题,在此归纳一下。第一种是比较常用的方法。是利用控件的RenderControl功能,得到该控件生成的HTML,然后以Excel文件的类型输出到客户端。这种方法生成的其实是个HTML文件,只不过Excel支持HTML格式,所以使用起来似乎和真正的Excel文件没什么两样,但它终究不是Excel格式,它不能当作数据源供其他程序调用。这种实现起来

shaily读书学习 3194

ASP.NET MVC中导出Excel的方式(一)(使用创作助手生成)

在这个示例中,我们首先创建了一个ClosedXML工作簿,添加了一个工作表,设置表头和数据,并调整了每列的宽度。然后我们设置响应头信息,将Excel文件写入响应流,并将ActionResult返回为空。在这个示例中,我们首先创建了一个Excel包,添加了一个工作表,设置表头和数据,并使用自适应列宽自动调整列宽。然后我们设置响应头信息,将Excel文件写入响应流,并将ActionResult返回为空。两种方式都能轻松地在ASP.NET MVC中生成Excel文件,并将其作为响应发送给请求方。

木木狐工作室 1145

Asp.Net中如何将数据导出excel

一、定义文档类型、字符编码      Response.Clear();    Response.Buffer= true;    Response.Charset="utf-8";      //下面这行很重要, atta...

weixin_33810302的博客 243

asp.net导出数据到Excel的几种方法(2/3)

     继续前文,第二种方法是利用Excel的Com接口库来完成,这种方法的优点是功能强大,可像使用Excel程序一样来操作Excel文件,缺点是需要服务器安装Excel程序,且需要一定的安全配置。一、准备工作:1)安装Microsoft Excel2)Com的安全设置。   在命令行输入DCOMCNFG ,进入组件服务设置界面,如图:打到Micorosoft Excel

cpp2017(慕白兄)的专栏 8492

ASP.NET中GridView导出Excel的快速方法

方法最有效,所以贴出来与大家分享 protected void btnOutExcel_Click(object sender, EventArgs e) { if (GridView1.Rows.Count > 0) { //调用导出方法 Ex

邱征响的专栏 8632

ASP.NET 数据导出excel文件给客户端下载的几种方法

http://blog.sina.com.cn/s/blog_40678c33010007zo.html ASP.NET 数据导出excel文件给客户端下载的几种方法 (2007-04-13 10:27:20)    分类:C#/ASP.NET学习笔记 数据导出excel文件给客户端下载的几种方法: 方法一:导出csv文件,存放在服务器端任一路径,然后给客户下载 优点: 1、可以进行身份认证...

digga2012 969

asp.net导入导出excel表,导入到sql数据库

采用DataTable和DataGrid两种导出方式,导出格式默认为xls,可以自行更改后缀。 导入采用直接把数据导入到数据库的方式。

asp.net导出excel方法汇总

1、由dataset生成public void CreateExcel(DataSet ds,string typeid,string FileName) ??{???HttpResponse resp;???resp = Page.Response;???resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");???

arthur_0的专栏 942

ASP.NET 导出Excel方法汇总(包含错误信息调试方法)

ASP.NET在数据表查看的同时,大部分用户希望能够把数据表信息能够导出Excel并进行保存。本文主要介绍几种导出Excel表格的方法以及在调试过程中,错误信息的调试方法。一、导出Excel方法asp.net导出Execl有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上;一种是将文件直接将文件输出流写给浏览器。在Response输出时,t分

薛敬明的专栏 2934

asp.net导出Excel的几种方法(示例)

2010年08月20日 星期五 17:36<br />在asp.net导出Excel有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上;一种是将文件直接将文件输出流写给浏览器。在Response输出时,t分隔的数据,导出Excel时,等价于分列,n等价于换行。<br /><br />1、将整个html全部输出Excel<br /><br />此法将html中所有的内容,如按钮,表格,图片等全部输出到Excel中。    Response.Clear();     <br

liaoxiaopeng的专栏 4703

asp.net导出EXCEL的好方法!(好用,导出全部数据)

1.调用方法: ExportExcel("application/ms-excel", "EXCEL名称.xls", GridView1, this.Page); 2.定义方法: /// <summary> /// 另外一种存为EXCEL方法 /// </summary> /// <...

diaofuzuo3286的博客 282
上一篇: 导出Excel 并提示下载Web版
下一篇: sql 数据库面试题
我是一只猫一只猫
博客等级 码龄15年 42粉丝 10原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值