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行出现整数型,那么默认就用整 ...
随机推荐
- DIY的.net正则表达式工具
基本包括了常用的正则表达式测试工作. 对应.net Framework 2.0版本 VB.NET编写 百度网盘下载:http://pan.baidu.com/s/1eQAHnlo 包含源码. 在下一个 ...
- SQLServer 列出每个表的列和属性
USE DBProjectSY GO SELECT OBJECT_SCHEMA_NAME(T.[object_id], DB_ID()) AS [架构名] , T.[name] AS [表名] , A ...
- 在Win2008上运行ASP.NET 1.1程序
在之前的文章<将Web站点由IIS6迁移至IIS7>中已经提到了关于在Win2008下运行ASP.NET 1.1程序的问题,但还不够完整,因此在这里重新整理一下. 1.要安装.net fr ...
- eaby技术架构变迁
如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 最近在infoq上面看到 ebay介绍其系统架构变迁以及系统设计分享方面的讲座,其中 ...
- Jmeter beanshell 生成手机号加密签名
首先自己写一个根据手机号生成加密字符串的函数,并且导出为Jar包,函数具体内容省略,网上有很多 将Jar包放到Jmeter lib\ext目录下面,然后在user.properties里面把路径加进去 ...
- 后台数据库读取Html值 到前台显示不了样式
@Html.Raw(FieldValue) 像一些Html代码 传到前台编译不了,直接显示出来 FieldValue 是后台传过来的值 viewBag
- Xenko基础API笔记3- Pointers指针设备屏幕上点对应的手指触摸。
样本这里是一个简单的示例程序,跟踪目前在屏幕上的指针和打印他们的位置.访问输入字段,类继承自@ SiliconStudio.Xenko.脚本的类. public override async Task ...
- 构建最小的docker容器
创建一个最小的基本镜像: tar cv --files-from /dev/null | sudo docker import - skycn/base 建一个hello.go: package ma ...
- Encrypting bootloader (程序BIN文件加密及在线升级)
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 在上一个博客随笔,我介 ...
- 采用UDP协议的PIC32MZ ethernet bootloader
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 经过千辛万苦,今天终于 ...