VB.NET实现Excel导入SQL数据库

时间:2007/12/31 18:59:22      阅读:18038          
      最近做的系统需要用到数据导入到SQL数据库,开始的时候使用Excel的CSV格式导入,在输入身份证的时候数据全部变成了科学记数的方法,由于CSV是无法设置格式的,身份证号码无法还原原来的格式,所以放弃了使用CSV格式,今天找了一些资料,C#的网上很多,我就不帖出来了,写成VB.NET代码供大家共享,代码可直接复制使用:
 
Dim strPath As String = File1.PostedFile.FileName
If strPath = "" Then
Response.Write(
" <script> alert( '请先选择文件 ') </script> ")
Response.End()
End If
'定义连接字符串
Dim sConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPath & "; Extended Properties=Excel 8.0;"
Try
Dim oleDbConnection As OleDbConnection = New OleDbConnection(sConnectionString)
oleDbConnection.Open()

'获取excel表
Dim dataTable As DataTable = oleDbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)

'获取sheet名,其中(0)(1)...(N): 按名称排列的表单元素
Dim tableName As String = dataTable.Rows(0)(2).ToString().Trim()
tableName
= "[" & tableName.Replace(" ' ", " ") & "]"

'利用SQL语句从Excel文件里获取数据
Dim query As String = "SELECT 部门,全年任务,本年累计完成,上年同期完成,[完成全年任务的%],[可比增长%] FROM " & tableName
Dim dataset As DataSet = New DataSet()

Dim oleAdapter As OleDbDataAdapter = New OleDbDataAdapter(query, sConnectionString)

oleAdapter.Fill(dataset,
"Rwb")

'SQL数据库连接
Dim sqlcon As SqlClient.SqlConnection = New SqlClient.SqlConnection("server=(local);database=test;user id=sa;password=123")
sqlcon.Open()

'从excel文件获得数据后,插入记录到SQL Server的数据表
Dim dataTable1 As DataTable = New DataTable()

Dim sqlDA1 As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter("SELECT 部门,全年任务, 本年累计完成,上年同期完成,[完成全年任务的%],[可比增长%] FROM Rwb ", sqlcon)

Dim sqlCB1 As SqlClient.SqlCommandBuilder = New SqlClient.SqlCommandBuilder(sqlDA1)

sqlDA1.Fill(dataTable1)

Dim dataRow11 As DataRow
For Each dataRow11 In dataset.Tables("qssrzb").Rows
'sql里数据dataRow1
Dim dataRow1 As DataRow = dataTable1.NewRow()
dataRow1(
"部门") = dataRow11("部门")
dataRow1(
"全年任务") = dataRow11("全年任务")
dataRow1(
"本年累计完成") = dataRow11("本年累计完成")
dataRow1(
"上年同期完成") = dataRow11("上年同期完成")
dataRow1(
"完成全年任务的%") = dataRow11("完成全年任务的%")
dataRow1(
"可比增长%") = dataRow11("可比增长%")
dataTable1.Rows.Add(dataRow1)
Next
Console.WriteLine(
"新插入 " & dataTable1.Rows.Count.ToString() & " 条记录 ")
sqlDA1.Update(dataTable1)

oleDbConnection.Close()
Catch ex As Exception
Console.WriteLine(ex.ToString())
End Try
评论
  • Re:VB.NET实现Excel导入SQL数据库  (2008/1/27 13:36:56) by Amiers 
    楼主可以把html贴出来吗?
     
  • Re:VB.NET实现Excel导入SQL数据库  (2008/4/20 14:36:43) by dreamice01 
    For Each dataRow11 In dataset.Tables("qssrzb").Rows——这句是什么意思?
     
    怎么这会又冒出一个("qssrzb").表来了?
     
    没法用呀
  • Re:VB.NET实现Excel导入SQL数据库  (2008/4/20 16:52:49) by 踢西 
    html代码就两个控件,没必要了贴出来了,("qssrzb")表自变通一下就可以了,不一定要完全按照我这个的,代码是完全可以用的。脑子转一下弯就好了
  • Re:VB.NET实现Excel导入SQL数据库  (2008/4/24 11:57:01) by 林峰 
    请问,这段代码能否实现导入一个EXCEL文档里的多个工作表里的数据
     
    我试过好长时间,都只能导入第一个工作表里的数据,如果存在几个工作表,其它的工作表里的数据都没法导进去。
     
    要用循环来读取EXCEL文档里的工作表名?
  • Re:VB.NET实现Excel导入SQL数据库  (2008/4/24 21:09:47) by 踢西 
    可以的,请参考这几句代码:
    '获取sheet名,其中(0)(1)...(N): 按名称排列的表单元素
    Dim tableName As String = dataTable.Rows(0)(2).ToString().Trim()
    tableName
    = "[" & tableName.Replace(" ' ", " ") & "]"
  • Re:VB.NET实现Excel导入SQL数据库  (2008/4/24 23:25:47) by 黄杨 
    只能导入第一个工作表里的数据,如果存在几个工作表,其它的工作表里的数据都没法导进去
  • Re:VB.NET实现Excel导入SQL数据库  (2008/4/26 15:45:25) by 林峰 
    的确没法导进去的,能读到有几个工作表,但无法获取每个工作表的表名,不知道能不能明确指点一下,呵呵。
     
    这里多谢了!
  • Re:VB.NET实现Excel导入SQL数据库  (2008/4/27 10:09:58) by 踢西 
    dataTable.Rows(0)(2).遍历一下这个呀,已经说得这么明白了
  • Re:VB.NET实现Excel导入SQL数据库  (2008/4/28 9:49:03) by 林峰 
    哈哈,不好意思,我只是个新手。
    好像有点明白了,我自己摸索一下吧
    多谢指点哈!!
  • Re:VB.NET实现Excel导入SQL数据库  (2008/5/4 16:42:22) by Gill 
    你好~能把程序打包发上来么?
  • Re:VB.NET实现Excel导入SQL数据库  (2008/5/4 17:10:04) by 林峰 
    最关键的这一句
    Dim
    tableName As String = dataTable.Rows(K)(2).ToString().Trim()
    tableName
    = "[" & tableName.Replace(" ' ", " ") & "]"


    注意:Rows(K)(2)——指每一行的那个表名称,呵呵。分享一下,我自己也摸了好长时间。

  • Re:VB.NET实现Excel导入SQL数据库  (2008/5/6 14:03:16) by xjg 
    1\For Each dataRow11 In dataset.Tables("qssrzb").Rows
    2\oleAdapter.Fill(dataset, "Rwb")
    3\成,上年同期完成,[完成全年任务的%],[可比增长%] FROM Rwb ", sqlcon)
    中的表分别指那里的啊
     
  • Re:VB.NET实现Excel导入SQL数据库  (2008/5/6 23:46:47) by 带带 
    窗口里能用么?
     
  • Re:VB.NET实现Excel导入SQL数据库  (2008/5/7 0:06:26) by 甯﹀甫 
    oleAdapter.Fill(dataset, "Rwb")
    执行到这里就没反应了  怎么回事?
    知道的说下  谢谢
  • Re:VB.NET实现Excel导入SQL数据库  (2008/5/14 18:36:18) by gaofeng 
    只能导入第一个工作表里的数据,如果存在几个工作表,其它的工作表里的数据都没法导进去
  • Re:VB.NET实现Excel导入SQL数据库  (2008/12/15 13:49:49) by 123123 
    請問是VS2003還是VS2005寫的?
  • Re:VB.NET实现Excel导入SQL数据库  (2010/6/6 14:29:07) by wxq1404 

    只能导入第一个工作表里的数

  • Re:VB.NET实现Excel导入SQL数据库  (2012/8/14 12:07:02) by yaogege 

    这代码不是WinFORM代码,有WINFORM的吗?

  • Re:VB.NET实现Excel导入SQL数据库  (2012/8/14 12:07:02) by yaogege 

    这代码不是WinFORM代码,有WINFORM的吗?

标 题:
 
姓 名:
 
主 页:

验证码:

评论:
 

Because of the cache,you may see your comments several minutes later.