zoukankan      html  css  js  c++  java
  • 使用ADO.net将数据导出到Excel并提供下载

    参考Meyer的文章写的一个例子,原文地址
    http://www.cnblogs.com/meyer/articles/6977.html

    项目下载

    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
            }
  • 相关阅读:
    Windows Server 2003 SP2(32位) 中文版 下载地址 光盘整合方法
    用Recycle()方法对Java对象的重要性
    Lotus中千奇百怪的 $$
    Developing a simple application using steps "User Decision" and "Mail"(1) 沧海
    沟通中的情绪管理(演讲稿) 沧海
    人只有在压力之下,才可能成功,没做一件事,都必须成功,不许言败 沧海
    什么是IDOC,以及IDOC的步骤 沧海
    VS2008 Professional Edition CHS中的deffactory.dat读取错误 沧海
    Including custom text in the step "User Decision" 沧海
    SAP Upgrade Strategy 沧海
  • 原文地址:https://www.cnblogs.com/lingyun_k/p/298112.html
Copyright © 2011-2022 走看看