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导入数据库相关推荐

  1. python如何操作excel数据_Python如何操作Excel

    以上可以根据需求的不同,选择合适的工具,现在给大家主要介绍最常用的xlrd&xlwt&xlutils系统工具的使用 1. xlrd&xlwt&xlutils介绍 xlr ...

  2. python导入excel数据-Python导入数值型Excel数据并生成矩阵操作

    riginal_Data 因为程序是为了实现对纯数值型Excel文档进行导入并生成矩阵,因此有必要对第五列文本值进行删除处理. Import_Data import numpy as np impor ...

  3. python将excel导入生成矩阵_Python导入数值型Excel数据并生成矩阵操作

    riginal_Data 因为程序是为了实现对纯数值型Excel文档进行导入并生成矩阵,因此有必要对第五列文本值进行删除处理. Import_Data import numpy as np impor ...

  4. python sqlserver 数据操作_python对Excel数据进行读写操作

    python对Excel数据进行读写操作 将学习到的基础操作记录在这里,便与复习查看 1.python读取Excel工作簿.工作表 import xlrd # 读取工作簿 wb=xlrd.open_w ...

  5. python对Excel数据进行读写操作

    python对Excel数据进行读写操作 将学习到的基础操作记录在这里,便与复习查看 1.python读取Excel工作簿.工作表 import xlrd # 读取工作簿 wb=xlrd.open_w ...

  6. C# 导入excel数据,解决关闭excel后不能释放资源的问题

    C# 导入excel数据,解决关闭excel后不能释放资源的问题 参考文章: (1)C# 导入excel数据,解决关闭excel后不能释放资源的问题 (2)https://www.cnblogs.co ...

  7. python excel详解_python操作excel详解

    前提: python操作excel需要使用的模块有xlrd.xlwt.xlutils.对excel进行读.写.更新操作.操作excel时需要先导入这些模块,demo如下: excel-读操作知识点: ...

  8. python与excel做数据可视化-python操作Excel、读取CVS与数据可视化

    1. python操作Excel python操作Excel有多种module可以实现(xlrd.xlwt.xlutils.openpyxl.xlsxwriter),本文使用xlsxwriter这个m ...

  9. java导入excel数据_java使用POI批量导入excel数据的方法

    一.定义 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 二.所需jar包: 三.简单的一个读取e ...

最新文章

  1. Fast and accurate short read alignment with Burrows-Wheeler transform
  2. linux下递归修改目录/文件权限命令
  3. 全文检索工具迅搜的安装和体验(可用于自建中文全文搜索引擎)
  4. CentOS7安装wdCP面板,快速搭建web运行环境(图文详解)
  5. 人工智能与大数据的耦合,将会怎么影响我们的生活
  6. 复数乘法_初学讲义之高中数学十八:复数
  7. vmware虚拟机里的服务器自动关闭,让VirtualBox虚拟机在主机关闭时自动关闭或保存状态VBoxVmService...
  8. linux环境配置sonarqube
  9. Mac上安装homebrew(类似于Linux上的apt-get)
  10. React Native知识7-TabBarIOS组件
  11. 如何注册苹果开发者账号
  12. pytorch制作数据集
  13. 【游戏开发进阶】教你使用IL2CppDumper从Unity il2cpp的二进制文件中获取类型、方法、字段等(反编译)
  14. win10 tagWnd部分成员逆向(窗口隐藏,窗口保护)
  15. 解决tp5 Could not open input file: think问题
  16. Geany 编程工具的使用
  17. 原创力文档怎么免费下载_哪里可以下载免费的PDF文档转换器?
  18. 如何对 iOS App 内购买项目进行测试?
  19. 十个相似图片搜索网站(以图找图)
  20. 论坛议程|COSCon'22 云计算(C)

热门文章

  1. SQL中 raiserror使用
  2. 小5与程序员的八年时间,一起来回想回想八年的经历吧
  3. java -jar命令启动jar包
  4. MIT数学最强本科生:2年半毕业,20多篇论文在手,还推动了停滞几十年的数学研究...
  5. iOS AVAudioPlayer简介
  6. Java 学习之路 重写父类方法
  7. mysql tee使用_MYSQL tee的功能测试
  8. matlab 高斯一阶导,高斯函数及其各阶导数
  9. 【HEX文件】校验和计算方法
  10. 移动无法访问函数不正确怎么才能把磁盘修好?