用户操作
[即时聊天] [发私信] [加为好友]
黑子ID:f_c_sh
6994次访问,排名14408好友2人,关注者21
计算机软件编程,篮球,c#,西安电子科技大学,恒拓科技发展有限公司
f_c_sh的文章
原创 53 篇
翻译 0 篇
转载 4 篇
评论 5 篇
最近评论
psnccs:Wow gold
db_ftsys:Great!
Osamede:转载请注明出处,谢谢。
zhangjie2008zhangjie:谢谢
hanxueni2008:学习
文章分类
收藏
    相册
    mm
    oo
    pp
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 asp.net导出数据到Excel的方法(完全无组件) 收藏

    新一篇: Repeater创建复杂表头的表格 | 旧一篇: asp.net 中如何得到图片的高度(height)和宽度(width)以及生成图片的缩略图 C#

    今天看见CSDN首页那几个ASP.NET导出Excel的文章,实在受不了了,现在谁还用Dcom阿?写的文章还只言片语,现在我给大家一个完整的代码,不用Excel.exe.

    今天把大家最常用的功能 ---asp.net导出数据到Excel, 通常的方法 是组件形式的,但是ASP.NET
    对杀死Excel.exe支持不够好,特别还需要设置dcom太麻烦了.现在我给大家的是我做 开发,已经应用到实际
    项目的方法,该方法不用调用Excel.exe进程.

    这种方法可能用的人不太多,缺点是必须有一个存在的Excel文件。优点是服务器不需要安装Excel,且生成的Excel是标准的Excel格式可以当作数据源使用

     

    using System;
    using System.Text;
    using System.Data;
    using System.Data.OleDb;

    namespace PowerAgent.DBUtility
    {
        
    /// Copyright (C) 2004-2008 WangXudong 
        
    /// http://www.wangxudong.com && http://xudongyh.cnblogs.com
        
    /// DataToExcel 的摘要说明。
        
    /// </summary>

        public class DataToExcel
        
    {
            
    const string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;";

            
    public DataToExcel()
            
    {
            }


            
    public string DataTableToExcel(DataTable dt, string excelPath)
            
    {
                
    if (dt == null)
                
    {
                    
    return "DataTable不能为空";
                }


                
    int rows = dt.Rows.Count;
                
    int cols = dt.Columns.Count;
                StringBuilder sb;
                
    string connString;

                
    if (rows == 0)
                
    {
                    
    return "没有数据";
                }


                sb 
    = new StringBuilder();
                connString 
    = string.Format(ConnectionString, excelPath);

                
    //生成创建表的脚本
                sb.Append("CREATE TABLE ");
                sb.Append(dt.TableName 
    + " ( ");

                
    for (int i = 0; i < cols; i++)
                
    {
                    
    if (i < cols - 1)
                        sb.Append(
    string.Format("{0} varchar,", dt.Columns[i].ColumnName));
                    
    else
                        sb.Append(
    string.Format("{0} varchar)", dt.Columns[i].ColumnName));
                }


                
    using (OleDbConnection objConn = new OleDbConnection(connString))
                
    {
                    OleDbCommand objCmd 
    = new OleDbCommand();
                    objCmd.Connection 
    = objConn;

                    objCmd.CommandText 
    = sb.ToString();

                    
    try
                    
    {
                        objConn.Open();
                        objCmd.ExecuteNonQuery();
                    }

                    
    catch (Exception e)
                    
    {
                        
    return "在Excel中创建表失败,错误信息:" + e.Message;
                    }


                    
    #region 生成插入数据脚本
                    sb.Remove(
    0, sb.Length);
                    sb.Append(
    "INSERT INTO ");
                    sb.Append(dt.TableName 
    + " ( ");

                    
    for (int i = 0; i < cols; i++)
                    
    {
                        
    if (i < cols - 1)
                            sb.Append(dt.Columns[i].ColumnName 
    + ",");
                        
    else
                            sb.Append(dt.Columns[i].ColumnName 
    + ") values (");
                    }


                    
    for (int i = 0; i < cols; i++)
                    
    {
                        
    if (i < cols - 1)
                            sb.Append(
    "@" + dt.Columns[i].ColumnName + ",");
                        
    else
                            sb.Append(
    "@" + dt.Columns[i].ColumnName + ")");
                    }

                    
    #endregion



                    
    //建立插入动作的Command
                    objCmd.CommandText = sb.ToString();
                    OleDbParameterCollection param 
    = objCmd.Parameters;

                    
    for (int i = 0; i < cols; i++)
                    
    {
                        param.Add(
    new OleDbParameter("@" + dt.Columns[i].ColumnName, OleDbType.VarChar));
                    }


                    
    //遍历DataTable将数据插入新建的Excel文件中
                    foreach (DataRow row in dt.Rows)
                    
    {
                        
    for (int i = 0; i < param.Count; i++)
                        
    {
                            param[i].Value 
    = row[i];
                        }


                        objCmd.ExecuteNonQuery();
                    }


                    
    return "数据已成功导入Excel";
                }
    //end using
            }

        }
    //end class
    }

     

    发表于 @ 2008年04月04日 12:35:00|评论(loading...)|编辑

    新一篇: Repeater创建复杂表头的表格 | 旧一篇: asp.net 中如何得到图片的高度(height)和宽度(width)以及生成图片的缩略图 C#

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 黑子