【數據庫】將Excel導入數據庫

/// <summary>
    /// 
    /// 功能:
    /// 
    ///  將任意excel導入數據庫
    ///  
    ///  異常:
    ///           
    ///    
    ///  注意:
    ///  
    ///     該方法是把所有excel內容導入數據庫,並不會檢查重複數據
    ///     
    /// </summary>
    /// <param name="tableName">數據庫中對應的表名</param>
    /// <param name="path">excel路徑</param>
    /// <returns>導入成功則返回true</returns>
    public static void InsertData(string tableName, string path ,out double progress) {
        progress = 0;
        DataSet ds = new DataSet();
        string strCon = "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" + path + "; Extended Properties='Excel 12.0;HDR=YES'";
        OleDbConnection cn = new OleDbConnection(strCon);
        OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", strCon);
        try {
            da.Fill(ds, tableName);
            DataTable dt = ds.Tables[tableName];

            //構造insert語句
            string sql_insert = "";
            string base_insert = "insert into [" + tableName + "] (";
            for (int i = 0; i < dt.Columns.Count; i++) {
                if (i != dt.Columns.Count - 1) {
                    base_insert += dt.Columns[i].ColumnName + ",";
                }
                else
                    base_insert += dt.Columns[i].ColumnName + ") values (";
            }

            for (int i = 0; i < dt.Rows.Count; i++) {
                sql_insert = base_insert;
                for (int j = 0; j < dt.Columns.Count; j++) {
                    if (j != dt.Columns.Count - 1) {
                        sql_insert += "'" + dt.Rows[i][j] + "',";
                    }
                    else
                        sql_insert += "'" + dt.Rows[i][j] + "')";
                }
                //設置進度變量
                progress = (double)(i + 1) / dt.Rows.Count;
                //執行insert語句
                SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionString, CommandType.Text, sql_insert, null);
            }     
        }
        catch (Exception ex) {
            throw ex;
        }
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章