原文链接: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 }

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

  1. SQL Server ->> DISABLE索引后插入更新数据再REBUILD索引 和 保留索引直接插入更新数据的性能差异

    之前对于“DISABLE索引后插入更新数据再REBUILD索引 和 保留索引直接插入更新数据的性能差异”这两种方法一直认为其实应该差不多,因为无论如何索引最后都需要被维护,只不过是个时间顺序先后的问题 ...

  2. SQL Server页类型汇总+疑问

    该文章整理自:http://www.sqlnotes.info/2011/10/31/page-type/ SQL Server中包含多种不同类型的页,来满足数据存储的需求.不管是什么类型的页,它们的 ...

  3. SQL Server触发器

    一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活.所以触发器可以用来实现对表实施复杂的完整性约`束. 二﹕ SQL Server为每个触发 ...

  4. SQL Server 触发器

    触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删 ...

  5. SQL Server 列存储索引强化

    SQL Server 列存储索引强化 SQL Server 列存储索引强化 1. 概述 2.背景 2.1 索引存储 2.2 缓存和I/O 2.3 Batch处理方式 3 聚集索引 3.1 提高索引创建 ...

  6. Datatypes translation between Oracle and SQL Server

    Datatypes translation between Oracle and SQL Server part 1: character, binary strings Datatypes tran ...

  7. 人人都是 DBA(VIII)SQL Server 页存储结构

    当在 SQL Server 数据库中创建一张表时,会在多张系统基础表中插入所创建表的信息,用于管理该表.通过目录视图 sys.tables, sys.columns, sys.indexes 可以查看 ...

  8. [SQL] SQL Server 触发器

    触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删 ...

  9. SQL Server编程(06)触发器

    SQL Server 通过触发器用来保证业务逻辑和数据的完整性.在SQL Server中,触发器是一种特殊类型的存储过程,可在执行语言事件时自动触发.SQL Server中触发器包括三种:DML触发器 ...

随机推荐

  1. 【Luogu】P1462通往奥格瑞玛的道路(二分答案+SPFA)

    题目链接 导致我WA十几遍的原因居然是最大值不够大……以后再也不相信memset(dis,127/3,sizeof(dis))了. 此题先将花费排序,然后二分最大花费,spfa判断解是否可行.spfa ...

  2. Spoj-BLMIRINA Archery Training

    Mirana is an archer with superpower. Every arrow she shoots will get stronger the further it travels ...

  3. jmeter监控linux cpu 内存 网络 IO

    下载地址:http://jmeter-plugins.org/downloads/all/ PerfMon: 用来监控Server的CPU.I/O.Memory等情况 ServerAgent-2.2. ...

  4. poj 2115 二元一次不定方程

    C Looooops Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14765   Accepted: 3719 Descr ...

  5. FOJ Problem 2271 X

    Problem 2271 X Accept: 55    Submit: 200Time Limit: 1500 mSec    Memory Limit : 32768 KB Problem Des ...

  6. R语言入门-画图(二)--heatmap

    一.函数参数: pheatmap参数: treeheight_row #横有多长 treeheight_col #竖有多长 cluster_cols=FLASE #单一方向聚类,也就是只有一边有树状结 ...

  7. 【微信小程序】开发实战 之 「配置项」与「逻辑层」

    微信小程序作为微信生态重要的一环,在实际生活.工作.商业中的应用越来越广泛.想学习微信小程序开发的朋友也越来越多,本文将在小程序框架的基础上就微信小程序项目开发所必需的基础知识及语法特点进行了详细总结 ...

  8. idea修改变量及其引用

    idea 修改某一变量及其引用 选中变量 shift+f6(shift+fn+f6), ctrl+R的当前页面全局替换, ctrl+shift+R 项目中的全局替换

  9. 初涉Git/Github

    初涉Git/Github 第一部分:我的本次作业成果 我自己个人的github地址是:STRSong 我们开发团队小组的github地址是:三组 第二部分:给同学推荐github资源 推荐1 这个推荐 ...

  10. 【Kotlin】spring boot项目中,在Idea下启动,报错@Configuration class 'BugsnagClient' may not be final.

    报错如下: Exception encountered during context initialization - cancelling refresh attempt: org.springfr ...