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

        }
时间: 2025-01-12 23:38:05

Aspose 直接插入SQL Server DataTalbe的相关文章

Datatypes translation between Oracle and SQL Server

Datatypes translation between Oracle and SQL Server part 1: character, binary strings Datatypes translation is one of the most important things you need to consider when migrate your application from one database to the other. This is an article in t

SQL Server 2005中的分区表(二):如何添加、查询、修改分区表中的数据

在创建完分区表后,可以向分区表中直接插入数据,而不用去管它这些数据放在哪个物理上的数据表中.接上篇文章,我们在创建好的分区表中插入几条数据: 从以上代码中可以看出,我们一共在数据表中插入了13条数据,其中第1至3条数据是插入到第1个物理分区表中的:第4.5条数据是插入到第2个物理分区表中的:第6至8条数据是插入到第3个物理分区表中的:第9至11条数据是插入到第4个物理分区表中的:第12.13条数据是插入到第5个物理分区表中的. 从SQL语句中可以看出,在向分区表中插入数据方法和在普遍表中插入数据

SQL Server触发器

触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删除的时候会自动执行的特殊存储过程.触发器一般用在check约束更加复杂的约束上面.触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作.诸如:update.insert.delete这些操作的时候,系统会自动调用执行该表上对应的触发器.SQL Server 2005中触发器可以分为两类:DM

SQL SERVER 触发器介绍

什么是触发器 触发器对表进行插入.更新.删除的时候会自动执行的特殊存储过程.触发器一般用在check约束更加复杂的约束上面.触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作.诸如:update.insert.delete这些操作的时候,系统会自动调用执行该表上对应的触发器.SQL Server 2005中触发器可以分为两类:DML触发器和DDL触发器,其中DDL触发器它们会影响多种数据定义语言语句而激发,这些语句有create.alter.drop语句. DML触发器分为: 1. a

sql server 简单常规表用法

sql server 2008 1.  sql server 设置自增列 create table ex (sno  int identity not null, sname char(15) null) 从0开始默认自增+1 若要设置初始值 identity(m,n) m为起始位置,n为增量 2.向表中添加列 3.向表中插入数据 sno行直接插入数据时报错 没有往sno中插入数据后,插入语句能执行,并且sno自动+1 4.删除数据库表中的记录 5. 我一直在找当增量+1的时候能不能改变其初始值

Global Azure上创建、配置、管理SQL Server信息

近期写了很多关于Azure的相关的文档,今天忙完介绍一下,如何在Windows Azure上配置和管理SQL Server信息:我们今天的实验还是以Global Azure来操作:其实在Windows Azure上的SQL Server结构跟本地差不多,只是在Azure上创建的SQL Server数据不会具有系统默认的管理员权限:比如创建数据库的时候需要指定数据库的管理员信息:不能使用sa做为管理员账户:具体就不多介绍了,具体见下: 我们首先单击SQL 数据库---添加 因为我们环境内没有创建过

SQL Server编程(06)触发器

SQL Server 通过触发器用来保证业务逻辑和数据的完整性.在SQL Server中,触发器是一种特殊类型的存储过程,可在执行语言事件时自动触发.SQL Server中触发器包括三种:DML触发器.DDL触发器和登录触发器. DML触发器:执行DML语句触发执行,例如操作数据表或视图的insert.update.delete语句,不包含select. DDL触发器:执行DDL语句时触发执行,例如create table等语句. 登录触发器:在用户登录SQL Server实例创建会话时触发.

SQL Server AlwaysON从入门到进阶(2)——存储

本文属于SQL Server AlwaysON从入门到进阶系列文章 前言: 本节讲解关于SQL Server 存储方面的内容,相对于其他小节而言这节比较短.本节会提供一些关于使用群集或者非群集系统过程中对存储的利用建议.当然,重点还是集中在对于一个标准的AlwaysOn可用组配置过程中,对存储的选择和配置上面. AlwaysOn的部署首先建立在一个Windows Server Failover Cluster(WSFC)上.并且每个服务器通常有一个独立的SQL Server实例.另外,每个服务器

SQL Server 触发器 转http://www.cnblogs.com/hoojo/archive/2011/07/20/2111316.html

SQL Server 触发器 触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删除的时候会自动执行的特殊存储过程.触发器一般用在check约束更加复杂的约束上面.触发器和普通的存储过程的区别是:触 发器是当对某一个表进行操作.诸如:update.insert.delete这些操作的时候,系统会自动调用执行该表上对应的触发器.SQL Server 2