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 }
Aspose 直接插入SQL Server DataTalbe的更多相关文章
- SQL Server ->> DISABLE索引后插入更新数据再REBUILD索引 和 保留索引直接插入更新数据的性能差异
之前对于“DISABLE索引后插入更新数据再REBUILD索引 和 保留索引直接插入更新数据的性能差异”这两种方法一直认为其实应该差不多,因为无论如何索引最后都需要被维护,只不过是个时间顺序先后的问题 ...
- SQL Server页类型汇总+疑问
该文章整理自:http://www.sqlnotes.info/2011/10/31/page-type/ SQL Server中包含多种不同类型的页,来满足数据存储的需求.不管是什么类型的页,它们的 ...
- SQL Server触发器
一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活.所以触发器可以用来实现对表实施复杂的完整性约`束. 二﹕ SQL Server为每个触发 ...
- SQL Server 触发器
触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删 ...
- SQL Server 列存储索引强化
SQL Server 列存储索引强化 SQL Server 列存储索引强化 1. 概述 2.背景 2.1 索引存储 2.2 缓存和I/O 2.3 Batch处理方式 3 聚集索引 3.1 提高索引创建 ...
- Datatypes translation between Oracle and SQL Server
Datatypes translation between Oracle and SQL Server part 1: character, binary strings Datatypes tran ...
- 人人都是 DBA(VIII)SQL Server 页存储结构
当在 SQL Server 数据库中创建一张表时,会在多张系统基础表中插入所创建表的信息,用于管理该表.通过目录视图 sys.tables, sys.columns, sys.indexes 可以查看 ...
- [SQL] SQL Server 触发器
触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删 ...
- SQL Server编程(06)触发器
SQL Server 通过触发器用来保证业务逻辑和数据的完整性.在SQL Server中,触发器是一种特殊类型的存储过程,可在执行语言事件时自动触发.SQL Server中触发器包括三种:DML触发器 ...
随机推荐
- BZOJ 4259 残缺的字符串 ——FFT
[题目分析] 同bzoj4503. 只是精度比较卡,需要试一试才能行O(∩_∩)O 用过long double,也加过0.4.最后发现判断的时候改成0.4就可以了 [代码] #include < ...
- ecplise 使用快捷键
1. [ALT+/] 此快捷键为用户编辑的好帮手,能为用户提供内容的辅助,不要为记不全方法和属性名称犯愁,当记不全类.方法和属性的名字时,多体验一下[ALT+/]快捷键带来的好处吧. 2. ...
- DelegatingActionProxy
使用 DelegatingActionProxy 使用 DelegatingRequestProcesso 非常简单方便,但有一个缺点:RequestProcessor 是Struts 的一个扩展点, ...
- LA 4728 旋转卡壳算法求凸包的最大直径
#include<iostream> #include<cstdio> #include<cmath> #include<vector> #includ ...
- net8:XML的读写操作【广告控件的XML文件实例】
原文发布时间为:2008-08-05 -- 来源于本人的百度文章 [由搬家工具导入] 【用了datalist控件,datalist控件自己学会,主要知道其他按钮COMMANDNAME属性应该改为edi ...
- linux内核中预留4M以上大内存的方法
在内核中, kmalloc能够分配的最大连续内存为2的(MAX_ORDER-1)次方个page(参见alloc_pages函数, "if (unlikely(order >= ...
- 建立django博客应用及数据库模型
1.现在就来创建我们的 Django 博客应用,我把它命名为 blog.激活虚拟环境,进入到 manage.py 文件所在的目录下,运行 python manage.py startapp blog ...
- nginx源码学习资源(不断更新)转
原文地址:http://www.cnblogs.com/yjf512/archive/2012/06/13/2548515.html nginx源码学习是一个痛苦又快乐的过程,下面列出了一些nginx ...
- 关于Properties 集 添加数据 遍历数据
public static void fun1(){ Properties v = new Properties(); v.setProperty("a","1" ...
- Go -- 判断chan channel是否关闭的方法
如果不判断chan是否关闭 Notice: 以下代码会产生死循环 代码如下: package main import ( "fmt" ) func main() { c := ma ...