首页 > 范文大全 > 正文

DB与Excel相互转换的实现方法

开篇:润墨网以专业的文秘视角,为您筛选了一篇DB与Excel相互转换的实现方法范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:db可以实现数据的共享与查询;excel可以对数据进行处理与分析。随着数据库技术和办公自动化技术的相互结合,急需解决两者之间的相互转换问题。该文以实例探讨了DB与Excel实现相互转换的方法

关键词:DB;Excel;相互转换

中图分类号:TP317文献标识码:A文章编号:1009-3044(2009)24-6753-03

Approach for Reciprocal Convertion on DB and Excel

XU Bin

(Department of Computer and Information Technology, Nanjing Yingtian College, Nanjing 210046, China)

Abstract: DB can achieve share and query of data;Excel may accomplish process and analyze of data.As combination of database technique and office automation technique,it is necessarily to solve the problem of their convertion.This paper gives example to discuss the methods of reciprocal convertion on DB and Excel.

Key words: DB; Excel; reciprocal convertion

在实际工作中,常常需要把某些相关数据导入到DB(数据库)中,以便实现数据的共享与查询,如何利用已有的Excel数据已成为一个棘手问题;另外,由于Excel具有强大的数据处理和数据分析功能,也常需要将DB中的数据导入到Excel中进行相应地统计分析。本文通过具体实例讨论了DB与Excel之间实现相互转换的方法。

1 Excel与DB的相互转换

软件开发工具为VB,数据库为Access。

VB是微软公司开发的、事件驱动的编程语言,具有强大的数据处理功能。它提供了对多种数据库的访问方法,可以方便地访问SQL Server、Oracle、Access等数据库。

Access 是微软公司开发的基于Windows的桌面关系数据库管理系统。它为建立功能完善的数据库管理系统提供了方便。

1.1 DB To Excel

实现数据库表中数据自动转存到Excel表中。例如,已有一文件名“AA.mdb”的Access数据库文件,该数据库中有一名为“番禺区农用地标准样地属性数据表”的数据表,数据表如图1所示。

在VB中,引用“Microsoft ActiveX Data Objects 2.6 Library”和“Microsoft Excel 11.0 Object Library”,即ADO对象和Excel对象。通过ADO对象访问数据库实现DB到Excel的转换。

程序代码如下:

Dim cnn As New ADODB.Connection '数据库连接对象

Dim rs As New Recordset '记录集对象

Dim VBExcel As Excel.Application '定义一个Excel应用

Dim Excelbook As Excel.Workbook '定义一个Excel工作簿

Dim ExcelSheet As Excel.Worksheet '定义一个Excel工作表

Dim ExcelFilename As String'Excel文件名

Dim TableName As String '数据库表名

Dim s As String

Dim i, j As Integer

Dim row As Integer '记录数

TableName = "番禺区农用地标准样地属性数据表"

Set VBExcel = CreateObject("Excel.Application") '创建Excel对象

Set Excelbook = VBExcel.Workbooks().Add '生成工作簿

Set ExcelSheet = Excelbook.Worksheets("Sheet1") '生成工作表

s = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\AA.mdb" '连接Access

cnn.Open s '打开Access

rs.Open "select * from " & TableName, cnn

'......统计记录数

rs.MoveFirst

Do While Not rs.EOF

row = row + 1

rs.MoveNext

Loop

With Excelbook.ActiveSheet

'......Excel表中第1行存放字段名

i = 1

For j = 1 To rs.Fields.Count

.Cells(i, j) = rs.Fields(j - 1).Name

Next j

'......Excel表中第2行开始存放记录

rs.MoveFirst

For i = 1 To row

For j = 1 To rs.Fields.Count

.Cells(i + 1, j) = rs.Fields(j - 1).Value

Next j

rs.MoveNext

Next i

End With

VBExcel.Application.Visible = True

Excelbook.SaveAs App.Path & "\" & TableName '生成的Excel文件名与数据表文件名一致

Set VBExcel = Nothing

Set Excelbook = Nothing

Set ExcelSheet = Nothing

程序运行后,在当前应用所在路径下自动创建名为“番禺区农用地标准样地属性数据表”的Excel文件,实现了将Access数据库相应数据表中的数据自动导入到Excel表中,结果如图2所示。

1.2 Excel To DB

实现Excel表中数据自动转存到数据库中。例如,已有一文件名为“番禺区农用地标准样地属性数据表.xls”的Excel文件,Excel表数据如图2所示。已有一文件名“AA.mdb”的Access数据库文件,为空数据库,没有数据表。

在VB中,引用“Microsoft ActiveX Data Objects 2.6 Library”和“Microsoft Excel 11.0 Object Library”,即ADO对象和Excel对象。通过ADO对象实现对数据库的操作。

程序代码如下:

Dim ExcelFilename As String'Excel文件名

Dim TableName As String '数据库表名

Dim row, col As Integer 'row为记录数,col为字段数

Dim fldname() As String '存储字段名,为动态数组

Dim i, j As Integer

Dim s As String

Dim cnn As New ADODB.Connection '数据库连接对象

Dim VBExcel As Excel.Application

Set VBExcel = CreateObject("Excel.Application") '创建Excel对象

s = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\AA.mdb" '连接Access

cnn.Open s '打开Access

ExcelFilename = "番禺区农用地标准样地属性数据表.xls"

TableName = Left(ExcelFilename, Len(ExcelFilename) - 4) '数据表名为"番禺区农用地标准样地属性数据表"

With VBExcel

.Workbooks.Open App.Path + "\" + ExcelFilename '打开Excel文件

'......取得字段数col及字段名fldname

i = 1 'Excel表中第1行为字段

j = 1

While .Cells(i, j) ""

ReDim Preserve fldname(j)

fldname(j) = .Cells(i, j)

j = j + 1

col = col + 1

Wend

'......取得记录数row

i = 2

j = 1

While .Cells(i, j) "" 'Excel表中第2行开始为记录

row = row + 1

i = i + 1

Wend

'.......建数据表结构

s = ""

For j = 1 To col

If j col Then

s = s + fldname(j) + " varchar(20),"

Else

s = s + fldname(j) + " varchar(20)"

End If

Next

s = "Create Table " & TableName & "(" & s & ")"

cnn.Execute s '执行SQL创建表的操作

'.......向数据表中插入记录

For i = 2 To row + 1

s = ""

For j = 1 To col

If j col Then

s = s + CStr(.Cells(i, j)) + "','"

Else

s = s + CStr(.Cells(i, j))

End If

Next

s = "Insert into " & TableName & " Values" & "('" & s & "')"

cnn.Execute s '执行SQL插入纪录的操作

Next

Set cnn = Nothing

.Workbooks.Close

.Quit

End With

程序运行后,在AA数据库中创建名为“番禺区农用地标准样地属性数据表”的数据表,并将Excel表中数据自动导入到该数据表中,结果如图1所示。

2 结束语

以上实例对DB与Excel间的相互转换问题做了有益的探讨,具有较强的实用性,减少了工作量,提高了两者之间相互转换的速度和质量,进一步推动了数据库技术和办公自动化技术的有机结合。

参考文献:

[1] 康亚,邵康,吴满意.一种高效的Excel表导入数据库的实现方法[J].电脑知识与技术,2008(16):1179-1181.

[2] 何畏,虞水俊.VB数据库编程中数据输出Excel的两种实现方法[J].电脑开发与应用,2002,15(9):13-17.

[3] 邱宁.Excel电子表格与数据库的数据转换[J].计算机应用与软件,2004,21(10):24-25.