Public file_name As String '声明全局变量,存储文件名
Private Sub 浏览_Click() '[按钮?]单击事件
CommonDialog1.Filter = "EXCEL文件(.XLS)|*.XLS|所有文件|*.*" '设置通用对话框过滤 xls文件 或 所有文件
CommonDialog1.ShowOpen '显示打开对话框
file_name = CommonDialog1.FileName '得到用户选择的文件名
If file_name = "" Then Exit Sub '判断文件名是否有效,无效则退出过程
List1.Clear '清空列表框
Dim xlExcel As Excel.Application '声明Excel应用程序实例
Dim xlBook As Excel.Workbook '声明Excel工作簿实例
Dim xlSheet As Excel.Worksheet '声明Excel表单实例
Set xlExcel = CreateObject("Excel.Application") '生成Excel应用程序实例
Set xlBook = xlExcel.Workbooks.Open(file_name) '打开xls文件
xlExcel.Visible = False '在后台处理,不显示Excel窗口
For i = 1 To xlBook.Sheets.Count '遍历所有工作表
Set xlSheet = xlBook.Worksheets(i)
xlSheet.Activate '激活第i个工作表
List1.AddItem xlSheet.Name '将工作表名添加到列表框
DoEvents '让系统响应一下其他消息
Next
xlBook.Close '关闭工作簿
xlExcel.Quit '退出Excel
End Sub
Private Sub List1_Click() '列表框单击事件
If Text1.Text = "" Then Exit Sub '如果Text1文本框没有内容则退出过程
If file_name = "" Then Exit Sub '如果用户选择的文件名无效则退出过程
Dim Con As New ADODB.Connection 'ADODB连接对象声明
Dim ConStr As String '声明字符串变量
Con.CursorLocation = adUseClient '设置游标引擎的位置,相关请参阅MSDN
ConStr = "driver=sql server;server=(local);uid=sa;pwd=56776606;database=knife;" '赋值:用sa账号,56776606为密码,连接本机SQLServer的knife数据库
Con.Open ConStr '打开连接
Con.Execute "SELECT * INTO " & Text1.Text & " FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=" & file_name & "'," & List1.Text & "$)"
'access、Oracle等数据库可以用SELECT....INTO....from...语句,可以在事先不创建表的情况下,直接将查询结果保存到一个新创建的表中。
'请不要见笑,貌似SQLServer不能这么做,当然我没有试验,我从来没这么做过,这个是把List1选择的工作表作为数据表,Text1制定的作为目标工作表
Con.Close '关闭连接
Set Con = Nothing '释放变量
MsgBox "导入成功!" '提示数据导入成功
Beep '制造dooooong的一声他妈的噪音
End Sub
Private Sub 导入Excel_Click() '单击事件
'碌碌无为
End Sub
总体上解释一下
1.按下 浏览 按钮,选择一个excel文件,然后将excel中每个sheet的名称添加到 List1列表中
2. 单击 list1. 将把sql server中 knife 数据库的 OPENROWSET 表中的数据读出来,并写入单击选中的那个sheet中。