zoukankan      html  css  js  c++  java
  • Aspose 直接插入SQL Server DataTalbe

    原文链接:http://www.cnblogs.com/hellohongfu/p/7362830.html

    下面的代码可以根据excel文件,生成创建表的SQL,以及测试InsertSQL 。方法将excel数据创建到SQL table 中

     private void GetExcelFile(string path, string folder = "")
            {
    
    
    
    
                StringBuilder sb = new StringBuilder();
                //loadfile
                Workbook workbook = new Workbook(path);
                
    
    
    
    
    
                for (int i = 0; i < workbook.Worksheets.Count; i++)
                {
                    var sheetName = workbook.Worksheets[i].Name;
                    sb.AppendFormat("create table  [BIUPload_{0}] (", sheetName);
    
    
                   
    
    
    
                    sb.AppendLine();
    
                    Cells cells = workbook.Worksheets[i].Cells;
                    #region create sql 
                    StringBuilder sql_log = new StringBuilder();
                    StringBuilder sql_insert = new StringBuilder();
                    sql_insert.AppendFormat("insert BIUPload_{0} (", sheetName);
    
                    for (int c = 0; c < cells.MaxDataColumn + 1; c++)
                    {
                        if (cells[0, c] != null && cells[0, c].Value != null)
                        {
    
                            var colname = cells[0, c].Value.ToString();
    
                            //sb.AppendLine("colname:" + colname);
                            sb.AppendFormat("[{0}] nvarchar(20) ,", colname);
                            sb.AppendLine();
    
                            if (c == 0)
                            {
                                sql_insert.AppendFormat("[{0}]", colname);
    
                            }
                            else
                            {
                                sql_insert.AppendFormat(",[{0}]", colname);
    
                            }
                            sql_insert.AppendLine();
                        }
    
    
    
                    }
    
                    sb.AppendLine(")");
                    sql_insert.AppendLine(")");
                    #endregion
    
                    #region create values
    
                    for (int r = 1; r <= cells.MaxDataRow; r++)
                    {
                        var   sql_values = new StringBuilder();
                        sql_values.AppendLine(sql_insert.ToString());
                        sql_values.AppendLine(" values (");
    
                        sql_log.AppendLine(sql_values.ToString());
    
                        List<SqlParameter> parameters = new List<SqlParameter>();
    
                        for (int c = 0; c < cells.MaxDataColumn + 1; c++)
                        {
                            var pName = "@P" + c;
    
                            if (cells[r, c] != null && cells[r, c].Value != null)
                            {
    
                                var value = cells[r, c].Value.ToString().Trim();
                                
                                SqlParameter sqlParameter = new SqlParameter(pName, value);
    
    
                                parameters.Add(sqlParameter);
    
                                if (c == 0)
                                {
                                    sql_values.AppendFormat("{0}", pName);
    
    
                                    sql_log.AppendFormat("'{0}'", value);
                                
                                }
                                else
                                {
                                    sql_values.AppendFormat(",{0}", pName);
                                    sql_log.AppendFormat(",'{0}'", value);
    
                                }
                            }
                            else
                            {
                                if (c == 0)
                                {
                                    sql_values.AppendFormat("''");
    
                                    sql_log.AppendFormat("''");
    
                                }
                                else
                                {
                                    sql_values.AppendFormat(",''");
                                    sql_log.AppendFormat("''");
    
                                }
                            }
                        }
    
                        sql_values.AppendLine(" )");
                        sql_log.AppendLine(" )");
    
                        SqlHelper.ExecuteNonQuery(_connString, CommandType.Text, sql_values.ToString(), parameters.ToArray());
    
    
                    }
    
                    #endregion
    
                    //insert values
    
                    #region insertSql
                    var sqlFile = File.Create(Path.Combine(folder, sheetName+DateTime.Now.ToString("yyyyMMddHHmmss") + ".sql"));
    
                    StreamWriter sw2 = new StreamWriter(sqlFile);
    
    
    
                    string excuteSQL = delete + sql_log.ToString();
    
                   // SqlHelper.ExecuteNonQuery(_connString, System.Data.CommandType.Text, excuteSQL);
                    sw2.WriteLine(excuteSQL);
                    sw2.Flush();
                    sw2.Close();
                    sqlFile.Close();
                    #endregion
    
                }
    
    
                #region create table
                var file = File.Create( Path.Combine(folder, DateTime.Now.ToString("yyyyMMddHHmmss") + "entity.txt"));
                StreamWriter sw = new StreamWriter(file);
                sw.WriteLine(sb.ToString());
                sw.Flush();
                sw.Close();
                file.Close();
                #endregion
    
    
    
    
              
    
    
            }
    
  • 相关阅读:
    Mina、Netty、Twisted一起学习(三):TCP前缀固定大小的消息(Header)
    集装箱set相关算法
    企业视觉-大型电商(制)-高性能的用户视觉性能(1)
    周期节
    在近排博客活动已被删除几篇文章
    [Python] Different ways to test multiple flags at once in Python
    [Angular] Use :host-context and the ::ng-deep selector to apply context-based styling
    [Javascirpt AST] Babel Plugin -- create new CallExpression
    [Python] Object spread operator in Python
    [Javascript AST] 3. Continue: Write ESLint rule
  • 原文地址:https://www.cnblogs.com/hellohongfu/p/7362830.html
Copyright © 2011-2022 走看看