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触发器 ...
随机推荐
- 将list分成等数量
import java.util.ArrayList; import java.util.List; public class CollectionGroupUtil { public static ...
- uva 10692 高次幂取模
Huge Mod Input: standard input Output: standard output Time Limit: 1 second The operator for exponen ...
- 洛谷 [P2953] 牛的数字游戏
SG搜索 n的范围在可以接受的范围内,SG搜索即可 #include <iostream> #include <cstdio> #include <cstring> ...
- GDOI2018 新的征程
看标题您一定以为考得很好.. Bad ending.想看美好结局的出门右转其他大佬博客. Day0 早上去车站的时候心情挺好.倒不是因为自己做足了准备,也不是因为预感到有好事发生,而是心情不好也没有用 ...
- hdu 4960 记忆化搜索 DP
Another OCD Patient Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Ot ...
- pyquery操作
pyquery和我们之前用的jQuery有着异曲同工之处,使用起来更加方便,基本能满足大部分时候我们的需求. 先引入一个小事例展示pyquery的操作: html = ''' <div> ...
- Poi写文件时报java.io.IOException: Read error
使用POI报表时不停的报java.io.IOException: Read error,看网上是说关闭了InputStream所导致的,由于我的InputStream是读取和写入都是用的同一个,所以就 ...
- luogu P1260 工程规划
题目描述 造一幢大楼是一项艰巨的工程,它是由n个子任务构成的,给它们分别编号1,2,…,n(5≤n≤1000).由于对一些任务的起始条件有着严格的限制,所以每个任务的起始时间T1,T2,…,Tn并不是 ...
- 23. 客户默认选项(Default Customer Options)
Editing Email Templates Email Sender Contact Us
- 游戏server主程白皮书-序言
在从事游戏开发的6年时间里面.涉及的内容包含运营平台.GM工具.MMORPG.FPS游戏. 游戏都已经上线而且稳定执行.单server的承载量在1万-5万之间.对于这种成绩我自己还是比較惬意了.期间得 ...