用户操作
[留言]  [发消息]  [加为好友] 
订阅我的博客
XML聚合    FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
xudongyh的公告
博客园的博客:http://xudongyh.cnblogs.com (经常更新,欢迎访问)
文章分类
    我的博客
    东哥的天空(RSS)
    存档

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

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

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

    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;
                    }


                    
    生成插入数据脚本


                    
    //建立插入动作的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日 00:11:00 | 评论( loading... ) | 编辑| 举报| 收藏

    旧一篇:华为员工,今天您跳了吗?跳楼真是很爽很刺激,压力大的都去吧。

    • 发表评论
    • 评论内容:
    •  
    Copyright © xudongyh
    Powered by CSDN Blog