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中将DataGrid数据导出到excel或word文件中

private void Page_Load(object sender, System.EventArgs e) { SqlConnection con=...

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

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

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

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

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

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

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

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

Asp.net 导出Excel文件的三种方法

Datagrid数据导出到excel文件的三种方法 方法一:导出到csv文件,存放在服务器端任一路径,然后给客户下载 优点: 1、可以进行身份认证后给客户下载,如果放到非w...

ASP.NET DataGrid导出Excel文件

在使用ASP.NET做网站时,如果直接在网页上编辑打印数据是很不方便的,因此需要导出Excel供使用者下载编辑。在寻找解决方法时,找了很多资料,经过添加和修改,终于得到令自己满意的代码: ...

ASP.NET导出Excel或Word文件格式

//说明下 EnableEventValidation="false"的使用;     //在页面上添加了输入型服务器控件时(如 TextBox),就需要设置为false了,否则会报错;也就是关闭页...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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