vb6将excel数据导入mysql_VB6操作EXCEL导入数据库
VB6操作EXCEL导入数据库
Private Function FunImpExcel(ByVal strFilePath As String) As Integer
'Excel文件格式
'第一行为表名,第二行为列名,其余行均为数据
On Error GoTo hErr
Dim objConn As New ADODB.Connection
Dim objRS As New ADODB.Recordset
If Dir(strFilePath) = "" Then
MsgBox "文件不存在",vbCritical,"错误"
Exit Function
End If
'定义Excel对象
Dim xlsApp As Object
Dim xlsWb As Object
Dim xlsWs As Object
Set xlsApp = CreateObject("Excel.Application") '建立excel对象
Set xlsWb = xlsApp.Workbooks.Open(strFilePath) '要打开的文档路径
Set xlsWs = xlsWb.Worksheets(1) '选工作表,有多张表时,可以参考此,变换序号指定不同的表
xlsWs.Activate
xlsApp.Visible = false '隐藏,否则会在界面显示出来
'Excel表格的行数和列数
Dim iRowCnt As Integer
Dim iColCnt As Integer
iRowCnt = xlsWs.UsedRange.Rows.Count '这个并不完全准确,在操作数据时要设置退出条件
iColCnt = xlsWs.UsedRange.Columns.Count'这个并不完全准确,在操作数据时要设置退出条件
'下面要根据具体的表格情况决定,这里前面两行是表名和列名
If iRowCnt <= 2 Then
MsgBox "没有需要导入的明细数据","错误"
GoTo hErr
End If
'从第3行开始是明细数据
For i = 3 To iRowCnt
'设置退出条件
If Trim$(xlsWs.Cells(i,3).Value) = "" Then
mdlPub.debug_print "on date found anymore:" & i
Exit For
End If
'第一条数据时,先打开数据库,这里是access
if 3 = i then
'数据库访问操作可以封装成一个公共的函数或过程
Dim strConn as String
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=true;Data Source=test.mdb"
objConn.CursorLocation = adUseClient
objConn.Open strConn
strSQL = "select * from [要导入的表名] where 1=2 "
objRS.CursorLocation = adUseClient
objRS.Open strSQL,objConn,adOpenKeyset,adLockOptimistic
End if
'新增一条记录,注意各个字段的数据类型匹配问题,
'最好全部统一先转化为字符串,再转化为对应的类型
objRS.AddNew
objRS.Fields("数据库列名1") = Trim(CStr(xlsWs.Cells(i,1).Value))
objRS.Fields("数据库列名2") = Trim(CStr(xlsWs.Cells(i,2).Value))
'.....
objRS.Fields("数据库列名n") = CLng(Trim(CStr(xlsWs.Cells(i,n).Value)))
'如果Excel列名与要导入的数据库列能按顺序一一对应,
'则可以按以下方式,但要解决不同字段的数据格式匹配问题,比较麻烦
'For j = 0 To RS.Fields.Count - 1
' RS.Fields(j) = Trim(CStr(xlsWs.Cells(i,1).Value))
'Next
'更新到数据库
objRS.Update
Next i
objRS.Close
objConn.Close
Set objRS = Nothing
Set objConn = Nothing
xlsWb.Close '关闭excel文件
xlsApp.Quit '退出excel
Set xlsWs = Nothing
Set xlsWb = Nothing
Set xlsApp = Nothing
FunImpExcel = 0'成功则返回0
Exit Function
hErr:
ImpExcelCertDtl = -1 '失败则返回1
If Not (xlsWb Is Nothing) Then xlsWb.Close '关闭文件
If Not (xlsApp Is Nothing) Then xlsApp.Quit
Set xlsWs = Nothing
Set xlsWb = Nothing
Set xlsApp = Nothing
MsgBox "文件导入失败","错误"
End Function
对于一个Excel文件中多个表格的情况,可以循环逐一导入。
为了方便,对于excel对象的定义可以明确一些,这样能自动弹出提示,方便编码。
如:
Dim xlsApp As New Excel.Application
Dim xlsWb As Excel.Workbook
Dim xlsWs As Excel.Worksheet
但这样定义时需要在工程中引入excel组件。
====================================================
将数据导出至Excel
'-----------------
'从数据从数据库导出至excel,并弹出保存文件对话框
'-------------------
Private Function FunExpExcel()
On Error GoTo hErr
'注意引用excel组件,也可以直接定义为对象object
Dim xlsApp As New Excel.Application
Dim xlsWb As Excel.Workbook
Dim xlsWs As Excel.Worksheet
Dim strFilePath As String
Dim strFileNm As String
Dim iColIdx As Integer
Dim objTmp As Object
'创建excel
Set xlsApp = CreateObject("Excel.Application")
xlsApp.Visible = False
xlsApp.SheetsInNewWorkbook = 1 '定义表格个数
'新增一张表格, 这里可以增加多张表
Set xlsWb = xlsApp.Workbooks.Add
'指定sheet,指定第一张,如果有多张,可以具体指定哪一个
Set xlsWs = xlsWb.Worksheets(1)
'xlsApp.Visible = False
xlsWs.Activate
xlsWs.Select
'第一行为标题
xlsWs.Cells(1,1).Value = "表格标题"
'第二行为列名,第一列列名“序号”
xlsWs.Cells(2,1).Value = "序号"
....
xlsWs.Cells(2,n).Value = "序号"
'如果是datagrid,可以直接用对应的列名
'For iColIdx = 0 To Me.grdQryInst.Columns.Count - 1
' xlsWs.Cells(2,iColIdx + 2).Value = Me.datagrid1.Columns(iColIdx).Caption
'Next
'设置第一列序号为数字格式
xlsWs.Columns("A:A").NumberFormatLocal = "0_ "
'设置其它列为文本格式,函数NumToChar26能将数字转化为对应的excel列名,如2->B,3->C,自已实现
'xlsWs.Columns(NumToChar26(2) & ":" & NumToChar26(Me.datagrid1.Columns.Count)).NumberFormatLocal = "@"
'----这里打开数据库,查询数据略,自己实现,如果是datagrid,则可以按下面的方法
'Dim RS As ADODB.Recordset
'Set RS = Me.datagrid1.DataSource
'从第三行开始写明细数据
RS.MoveFirst
For iRowIdx = 0 To RS.RecordCount - 1
xlsWs.Cells(iRowIdx + 3,1).Value = CStr(iRowIdx + 1)
'对第一行,按顺序逐列写单元格
For iColIdx = 0 To RS.Fields.Count - 1
xlsWs.Cells(iRowIdx + 3,iColIdx + 2).Value = RS.Fields(iColIdx).Value
Next
RS.MoveNext
Next
'-----写完数据,下面设置导出excel格式
'标题格式设置
Set objTmp = xlsWs.Range(xlsWs.Cells(1,1),xlsWs.Cells(1,iColIdx + 2 - 1))
objTmp.Merge '合并单元格
'标题排版
With objTmp
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
With objTmp.Font
.Name = "宋体"
.Size = 18
End With
'第2行开始,设置边框,字体与标题不同
Set objTmp = xlsApp.Range(xlsWs.Cells(2,xlsWs.Cells(iRowIdx + 3 - 1,iColIdx + 2 - 1))
With objTmp.Font
.Name = "宋体"
.Size = 10
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
objTmp.Borders(xlDiagonalDown).LineStyle = xlNone
objTmp.Borders(xlDiagonalUp).LineStyle = xlNone
With objTmp.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With objTmp.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With objTmp.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With objTmp.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With objTmp.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With objTmp.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
'设置列宽,自动扩展
For iColIdx = 1 To Me.grdQryInst.Columns.Count + 1
xlsWs.Columns(NumToChar26(iColIdx) & ":" & NumToChar26(iColIdx)).EntireColumn.AutoFit
Next
'弹出保存文件对话框,要在窗体上增加commondialog控件,控件命名dlgFile
Me.dlgFile.DialogTitle = "保存至"
Me.dlgFile.Flags = &H200
Me.dlgFile.DefaultExt = ".xls"
Me.dlgFile.Filter = "Excel数据文件 *.xls|*.xls" '过滤器
Me.dlgFile.InitDir = App.Path
Me.dlgFile.FileName = strFileNm & ".xls"
Me.dlgFile.ShowSave
If Err <> 32755 Then strFilePath = dlgFile.FileName
If "" <> strFilePath Then
xlsWb.SaveAs strFilePath
Else
mdlPub.ShowInfo "文件未保存"
End If
xlsWb.Close
xlsApp.Quit
Set xlsWs = Nothing
Set xlsWb = Nothing
Set xlsApp = Nothing
FunExpExcel = 0 '成功则返回0
mdlPub.ShowInfo "已保存至" & strFilePath
Exit Sub
hErr:
FunExpExcel = -1'失败则返回1
If Err.Number <> 0 Then mdlPub.ShowErrMsg "导出错"
If Not (xlsWb Is Nothing) Then Set xlsWs = Nothing
If Not (xlsWb Is Nothing) Then
xlsWb.Close
Set xlsWb = Nothing
End If
If Not (xlsWb Is Nothing) Then
xlsApp.Quit
Set xlsApp = Nothing
End If
End Function
=================================
h注意,在使用VB操作excel过程中,对于excel对象的引用都要用到本地定义的excel三个变量xlsApp,xlsWb,xlsWs之一做前缀,否则, 会出现残留EXCEL进程的情况,下次操作EXCEL时会报错。原因是没有加本地定义的变量做前缀,而使用了EXCEl的全局变量形式,xlsWb.Close,xlsApp.Quit语句只是退出局部EXCEL,无法退出全局EXCEL。
vb6将excel数据导入mysql_VB6操作EXCEL导入数据库相关推荐
- python如何操作excel数据_Python如何操作Excel
以上可以根据需求的不同,选择合适的工具,现在给大家主要介绍最常用的xlrd&xlwt&xlutils系统工具的使用 1. xlrd&xlwt&xlutils介绍 xlr ...
- python导入excel数据-Python导入数值型Excel数据并生成矩阵操作
riginal_Data 因为程序是为了实现对纯数值型Excel文档进行导入并生成矩阵,因此有必要对第五列文本值进行删除处理. Import_Data import numpy as np impor ...
- python将excel导入生成矩阵_Python导入数值型Excel数据并生成矩阵操作
riginal_Data 因为程序是为了实现对纯数值型Excel文档进行导入并生成矩阵,因此有必要对第五列文本值进行删除处理. Import_Data import numpy as np impor ...
- python sqlserver 数据操作_python对Excel数据进行读写操作
python对Excel数据进行读写操作 将学习到的基础操作记录在这里,便与复习查看 1.python读取Excel工作簿.工作表 import xlrd # 读取工作簿 wb=xlrd.open_w ...
- python对Excel数据进行读写操作
python对Excel数据进行读写操作 将学习到的基础操作记录在这里,便与复习查看 1.python读取Excel工作簿.工作表 import xlrd # 读取工作簿 wb=xlrd.open_w ...
- C# 导入excel数据,解决关闭excel后不能释放资源的问题
C# 导入excel数据,解决关闭excel后不能释放资源的问题 参考文章: (1)C# 导入excel数据,解决关闭excel后不能释放资源的问题 (2)https://www.cnblogs.co ...
- python excel详解_python操作excel详解
前提: python操作excel需要使用的模块有xlrd.xlwt.xlutils.对excel进行读.写.更新操作.操作excel时需要先导入这些模块,demo如下: excel-读操作知识点: ...
- python与excel做数据可视化-python操作Excel、读取CVS与数据可视化
1. python操作Excel python操作Excel有多种module可以实现(xlrd.xlwt.xlutils.openpyxl.xlsxwriter),本文使用xlsxwriter这个m ...
- java导入excel数据_java使用POI批量导入excel数据的方法
一.定义 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 二.所需jar包: 三.简单的一个读取e ...
最新文章
- Fast and accurate short read alignment with Burrows-Wheeler transform
- linux下递归修改目录/文件权限命令
- 全文检索工具迅搜的安装和体验(可用于自建中文全文搜索引擎)
- CentOS7安装wdCP面板,快速搭建web运行环境(图文详解)
- 人工智能与大数据的耦合,将会怎么影响我们的生活
- 复数乘法_初学讲义之高中数学十八:复数
- vmware虚拟机里的服务器自动关闭,让VirtualBox虚拟机在主机关闭时自动关闭或保存状态VBoxVmService...
- linux环境配置sonarqube
- Mac上安装homebrew(类似于Linux上的apt-get)
- React Native知识7-TabBarIOS组件
- 如何注册苹果开发者账号
- pytorch制作数据集
- 【游戏开发进阶】教你使用IL2CppDumper从Unity il2cpp的二进制文件中获取类型、方法、字段等(反编译)
- win10 tagWnd部分成员逆向(窗口隐藏,窗口保护)
- 解决tp5 Could not open input file: think问题
- Geany 编程工具的使用
- 原创力文档怎么免费下载_哪里可以下载免费的PDF文档转换器?
- 如何对 iOS App 内购买项目进行测试?
- 十个相似图片搜索网站(以图找图)
- 论坛议程|COSCon'22 云计算(C)