C# 获取excel架构并的导入sqlserver的方法
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.IO; namespace WindowsFormsApplication1
{
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
string connString = "server=localhost;database=Test;uid=sa;pwd=123456";
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
TransferData(ofd.FileName, connString);
}
} public void TransferData(string excelFile, string connectionString)
{
try
{
string fileType = Path.GetExtension(excelFile);
//获取全部数据
string strConn="";
if (fileType == ".xls")
{
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + excelFile + ";" + "Extended Properties=Excel 8.0;";
}
else
{
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + excelFile + ";" + ";Extended Properties=Excel 12.0";
}
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open(); DataSet ds = new DataSet();
DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });
for (int i = ; i < dt.Rows.Count; i++)
{
string sheetName = dt.Rows[i]["Table_Name"].ToString();
if (sheetName.Contains("$") && !sheetName.Replace("'", "").EndsWith("$"))
{
continue;
} string strExcel = string.Format("select * from [{0}]", sheetName);
OleDbDataAdapter myCommand = new OleDbDataAdapter(strExcel, conn);
DataSet dsItem = new DataSet();
myCommand.Fill(dsItem, sheetName);
dsItem.Tables[].TableName = sheetName.TrimEnd('$').Trim();//读取出来的表明会自动添加'$'符号,需要去掉。
ds.Tables.Add(dsItem.Tables[].Copy());
} for (int i = ; i < ds.Tables.Count; i++)
{
string sheetName = ds.Tables[i].TableName;
string strSql = string.Format("if object_id('{0}') is null create table {0}(", sheetName);
foreach (System.Data.DataColumn c in ds.Tables[].Columns)
{
strSql += string.Format("[{0}] varchar(255),", c.ColumnName);
}
strSql = strSql.Trim(',') + ")"; using (SqlConnection sqlConn = new SqlConnection(connectionString))
{
sqlConn.Open();
using (SqlCommand cmd = sqlConn.CreateCommand())
{
cmd.CommandText = strSql;
cmd.ExecuteNonQuery();
}
} using (SqlBulkCopy bcp = new SqlBulkCopy(connectionString))
{
bcp.BatchSize = ;
bcp.DestinationTableName = sheetName; //建立excel和sqlserver表之间的映射关系
bcp.ColumnMappings.Add(, );
bcp.ColumnMappings.Add(, );
bcp.ColumnMappings.Add(, ); bcp.WriteToServer(ds.Tables[i]);
}
}
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
}
http://blog.csdn.net/jinjazz/article/details/2650506
http://www.cnblogs.com/advocate/archive/2010/04/12/1710383.html
http://developer.51cto.com/art/201302/380622.htm
C# 获取excel架构并的导入sqlserver的方法的更多相关文章
- c#中高效的excel导入sqlserver的方法
将oledb读取的excel数据快速插入的sqlserver中,很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,最好的办法是使用bcp,也就是System.Data.SqlClient.S ...
- POI获取Excel列数和行数的方法
//获取指定行,索引从0开始 hssfRow=hssfSheet.getRow(1); //获取指定列,索引从0开始 hssfCell=hssfRow.getCell((short)6);//获取总行 ...
- dbf导入sqlserver的方法
1. dbf导出为foxpro2.x. 2.打开excel,点击打开,选择dbase文件,选中第一步保存的文件. 3.另存为xls格式 4.使用sql的dts导入xls.
- JAVA使用POI获取Excel的列数与行数
Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能. 下面这篇文章给大家介 ...
- (转)高效的将excel导入sqlserver中
大部分人都知道用oledb来读取数据到dataset,但是读取之后怎么处理dataset就千奇百怪了.很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,System.Data.SqlClie ...
- c++ 读写Excel及数据导入SQLServer
c++ 读写Excel及数据导入SQLServer C++操作Excel ,网上的资料还是比较多的,写这篇文章也是分享给初学者一些经验. 本人 觉得CSpreadShe ...
- 如何高效的将excel导入sqlserver?
大部分人都知道用oledb来读取数据到dataset,但是读取之后怎么处理dataset就千奇百怪了.很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,System.Data.SqlClie ...
- 将excel中的sheet1导入到sqlserver中
原文地址:C#将Excel数据表导入SQL数据库的两种方法作者:windream 方式一: 实现在c#中可高效的将excel数据导入到sqlserver数据库中,很多人通过循环来拼接sql,这样做不但 ...
- excel 导入 sqlserver 字符串被截取为255长度解决方案
excel表格导入sqlserver数据表中 内容被截取为255长度的字符串. 注意:excel是通过前8行(表头的首行除外)的数据类型来判断导入数据的数据格式的,例如前8行出现整数型,那么默认就用整 ...
随机推荐
- (转)设计模式_Singleton单例模式
静态初始化 public sealed class Singleton { private static readonly Singleton instance = new Singleton(); ...
- Partitioning & Archiving tables in SQL Server (Part 2: Split, Merge and Switch partitions)
Reference: http://blogs.msdn.com/b/felixmar/archive/2011/08/29/partitioning-amp-archiving-tables-in- ...
- pycharm激活码,拿走不谢
激活码 新下载pycharm编辑器以后,会遇到一个激活的问题,否则只能试用30天 43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVO ...
- Java-生成指定长度验证码的一种简单思路
前言:以前做过的一个项目,刚开的时候始验证码是在前端生成前端验证的,后来觉得不靠谱,另外就是找回密码的功能也需要发送邮件和短信的验证码,所以,验证码就必须在后端生成并且保存到应用会话中才行了!所以, ...
- leetcode-【中等题】228. Summary Ranges
题目: 228. Summary Ranges Given a sorted integer array without duplicates, return the summary of its r ...
- ue4标签测试与总结(UPROPERTY)
学习UE4框架中的标签,本篇是总结成员变量标签UPROPERTY. 引擎版本:4.12.5 前期准备: 1.新建项目,C++空模板,新建C++类,继承AActor,名称MyActor. 使用TestA ...
- rabbitMQ学习(二)
一端发送,多端消费 发送端: import java.io.IOException; import com.rabbitmq.client.ConnectionFactory; import com. ...
- Theme皮肤文件(json解析、多文件管理)
一 官方教程 http://developer.egret.com/cn/github/egret-docs/extension/EUI/skin/theme/index.html 二 thm主题文 ...
- HL7 2.6解析转XML(C#版)
HL7 2.6解析转XML(C#版) 项目中需要解析HL7,所以在网上找到解析代码,但错误很多,所以我修改了一下,测试好用. using System; using System.Collection ...
- 使用python的redis 实现消息的pub/sub功能
直接上代码: 首先需要明确的是,客户端向服务端去发送消息,服务端只需要订阅是哪些各频道即可,然后客户端向这些个频道发送消息 在客户端的代码: #!/usr/bin/env python #coding ...