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触发器 ...
随机推荐
- 【图论】bnuoj 52810 Splitting the Empire
acm.bnu.edu.cn/v3/contest_show.php?cid=9208#problem/G [题意] 给定一个无向图,要求把这个无向图的点划分到不同的集合里,使得每个集合的点之间两两没 ...
- poj 3608 凸包间的最小距离
Bridge Across Islands Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7632 Accepted: ...
- linux命令netstat或ifconfig未找到
linux命令netstat或ifconfig未找到 linux使用netstat或者ifconfig命令时,显示命令未找到.通过yum search netstat这个命令,匹配结果如下:===== ...
- Docker-PostgresSQL
Postgresql Docker安装运行 mac环境: 1.拉取官方镜像,并创建容器 zhoumatoMacBook-Pro:~ zhou$ docker search postgresql NA ...
- AC日记——小书童——刷题大军 洛谷 P1926
题目背景 数学是火,点亮物理的灯:物理是灯,照亮化学的路:化学是路,通向生物的坑:生物是坑,埋葬学理的人. 文言是火,点亮历史宫灯:历史是灯,照亮社会之路:社会是路,通向哲学大坑:哲学是坑,埋葬文科生 ...
- codevs——1570 去看电影
1570 去看电影 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 农夫约翰带着他的一些奶牛去看电影.而他的 ...
- python入门示例程序
该实例是raspi和dsp电机运动控制板的串口uart通信: import serial class SerialHandler(): ''' raspi serial for communicati ...
- 关于get请求的乱码问题
1.使用getBytes() 页面跳转时,参数中含有中文,特殊符号,tomcat的默认编码为ios-8859-1,后台接受中文编码时,使用如下转码 //获取参数 String bname = requ ...
- dwarf调试信息格式入门
https://www.prevanders.net/dwarf.html#testingcomment http://www.dwarfstd.org/ http://www.cnblogs.com ...
- printf行缓冲区的分析总结
最近在客户那调试串口的时候,read串口然后printf打印,单字符printf,发现没有输出,后来想起来printf这些标准输入输出函数也是属于标准C库glibc的, 这里就要区分一下标准库函数和系 ...