Asp.net 数据导出为Excel文件

原创 2016年02月23日 16:26:05

数据导出为Excel文件

            //一个有数据的DataTable 
            DataTable dt = getData();
            StringBuilder data_list = new StringBuilder();
            string excelName = "Excel文件名称";           
            if (dt.Rows.Count > 0)
            {

                data_list.Append("<table border='1'>");
                data_list.Append(" <tr><td>数据时间</td><td>类型</td></tr>");

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    data_list.Append("<tr>");
                    data_list.Append("<td>时间值</td>");
                    data_list.Append("<td>类型值</td>");                    
                    data_list.Append("</tr>");
                }
            }
            string content = data_list.ToString();
            saveAsExcel(content, excelName); return "";

需要引用的方法有

        internal Exception error = null;
        #region 将html内容另存为Excel
        /// <summary>
        /// 将html内容另存为Excel
        /// </summary>
        /// <param name="content">html格式的内容字符串</param>
        /// <param name="xlsFile">要保存的Excel文件名</param>
        /// <returns></returns>
        internal bool saveAsExcel(string content, string xlsFile)
        {
            try
            {
                string html = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">" + content;
                System.Web.HttpContext curContext = System.Web.HttpContext.Current;
                curContext.Response.Buffer = true;
                curContext.Response.Clear();
                curContext.Response.Charset = "GB2312";
                if (curContext.Request.UserAgent.Contains("MSIE") || curContext.Request.UserAgent.Contains("msie"))
                {
                    // 如果客户端使用 Microsoft Internet Explorer,则需要编码
                    // 如果使用 fileName =Server.UrlEncode(fileName); 则会出现上文中出现的情况
                    xlsFile = toHexString(xlsFile);
                }
                curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + xlsFile + ".xls");
                curContext.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
                curContext.Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
                curContext.Response.Write(html);
                curContext.Response.Flush();
                curContext.Response.Clear();
                //curContext.Response.End();
                curContext.ApplicationInstance.CompleteRequest();
            }
            catch (Exception ex)
            {
                error = ex;
                return false;
            }
            return true;
        }

        // 为字符串中的非英文字符编码
        string toHexString(string s)
        {
            char[] chars = s.ToCharArray();
            StringBuilder builder = new StringBuilder();
            for (int index = 0; index < chars.Length; index++)
            {
                bool bEncode = needToEncode(chars[index]);
                if (bEncode)
                {
                    string encodedString = toHexString(chars[index]);
                    builder.Append(encodedString);
                }
                else
                {
                    builder.Append(chars[index]);
                }
            }
            return builder.ToString();
        }

        //指定 一个字符是否应该被编码
        bool needToEncode(char chr)
        {
            string reservedChars = "$-_.+!*'(),@=&";
            if (chr > 127)
                return true;
            if (char.IsLetterOrDigit(chr) || reservedChars.IndexOf(chr) >= 0)
                return false;
            return true;
        }
        // 为非英文字符串编码
        string toHexString(char chr)
        {
            UTF8Encoding utf8 = new UTF8Encoding();
            byte[] encodedBytes = utf8.GetBytes(chr.ToString());
            StringBuilder builder = new StringBuilder();
            for (int index = 0; index < encodedBytes.Length; index++)
            {
                builder.AppendFormat("%{0}", Convert.ToString(encodedBytes[index], 16));
            }
            return builder.ToString();
        }
        #endregion

菜鸟总结 多存疏漏 感谢指正

版权声明:本文为博主原创文章,未经博主允许不得转载。

asp.net 将DataTable中的数据导出到Excel并下载方法

我上一篇文章介绍了Excel导入到DataTable的方法,总觉得少些什么,这篇我就将DataTable         中的数据导出到Excel并提供下载的方法记录下来。        ...
  • lishimin1012
  • lishimin1012
  • 2014年08月06日 15:07
  • 13829

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

asp.net导出到Excel也是个老生常谈的问题,在此归纳一下。 第一种是比较常用的方法。是利用控件的RenderControl功能,得到该控件生成的HTML,然后以Excel文件的类型输出到客户...
  • zlwzlwzlw
  • zlwzlwzlw
  • 2015年02月09日 15:31
  • 2520

asp.net中利用NPOI导出数据到excel中

asp.net中利用NPOI实现导出DataSet到Excel中,首先下载对应的dll,下载地址:将其添加到项目引用中。下面给出一个方法NPOIHelper.cs,代码如下:using System;...
  • taomanman
  • taomanman
  • 2015年07月03日 15:15
  • 4029

asp.net中将GridView数据导出成Excel文件(下)

asp.net中将GridView数据导出成Excel文件(下) /// 导出GridView中的数据到Excel private static void GoToExcel(GridVi...
  • mznxbcv1
  • mznxbcv1
  • 2013年03月13日 17:51
  • 390

asp.net中将DataGrid数据导出到excel或word文件中

private void Page_Load(object sender, System.EventArgs e) { SqlConnection con=...
  • fjnu2008
  • fjnu2008
  • 2012年08月07日 09:09
  • 347

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

ASP.NET 数据导出到excel文件给客户端下载的几种方法 (2007-04-13 10:27:20)     分类:C#/ASP.NET学习笔记  数据导出到excel文件给客户端下...
  • binyao02123202
  • binyao02123202
  • 2011年10月12日 09:05
  • 3230

asp.net 导出数据源到Excel模版文件

最近在做asp.net项目,在此过程中用到Excel导出,我整理了导出数据源到Excel模版文件的共同方法,分享给大家! 如果大家还有更好的方法,可以分享给我,谢谢! 方法一:利用Microsof...
  • wmin0909
  • wmin0909
  • 2012年08月03日 16:39
  • 1494

在ASP.NET中将Excel文件中数据导入数据库并显示进度条

在ASP.NET中经常会遇到Excel文件导入数据库的问题,遇到数据量比较大的时候,最好显示进度条。进度条设计是参考网上某牛人提供的代码,利用JS实现的,谢谢这个大牛了(忘记了当时记录下他的大名了,:...
  • jasonwu_bj
  • jasonwu_bj
  • 2011年01月02日 11:36
  • 2732

Asp.net/c#+OleDb操作excel文件(二),数据传输使用Parameters

Asp.net/c#+OleDb操作excel文件(二),数据传输使用Parameters
  • dz45693
  • dz45693
  • 2011年01月12日 16:35
  • 2656

C# ASP.net将DataGrid数据输出到Excel文件

  • 2014年08月21日 18:06
  • 90KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Asp.net 数据导出为Excel文件
举报原因:
原因补充:

(最多只允许输入30个字)