VBAccess系统中实现Excel和Access数据库相互导入
Excel、Access、VB的结合应用
Excel 、 Access 、 VB 的结合应用江苏省南通市学田新村杨伟民---- 微软公司的 Office 系列办公软件相信已是众所周知,其中 Excel 强大的统计制表功能、 Access 功能完备的数据处理能力深受众多用户所喜爱。
Visual Bsaic 更是微软公司又一有力的产品,它简单易学,在 Windows 编程中的应用十分广泛。
本文通过介绍数据处理及复杂表格的打印,来讨论 VB 与 Excel 及 Access 的结合运用。
---- 由于笔者所在的公司员工众多, 在进行职工养老保险缴费的计算工作时, 若使用劳动局编制的软件(用 Foxbase 编写 ,无论是在管理或维护方面均显得力不从心。
于是在公司领导的强烈要求下,决定由笔者构思重新编制。
基本思路是:1. 将所有员工资料输入 Access 进行处理,以便于维护。
2. 在 Excel 中预先制成有表头的空表(Access 相对欠缺处理复杂表格的能力 ,对需要进行金额汇总或其他运算的单元格可直接输入公式。
3. 在 VB 中编写程序代码,从 Access 中提取数据填入 Excel 对应表格相应的单元格,并输出至打印机。
---- 部分窗体及源程序代码如下:---- 1.程序主模块---- 定义 Excel 、 Access 对象变量,显示系统启动画面,进入系统主程序界面。
强调一下, 在编写程序之前须加入对 Excel 及 Access 库函数的引用,具体操作是:选择菜单栏 ' 工程 '\'引用…' ,将 ' 可使用的引用 ' 列表框内 'Microsoft Access 8.0 Object Library' 和 'Microsoft Excel 8.0 Object Library'两项前的复选框标为选中,按 " 确定 " 返回。
如何将Excel的数据写入到Accees?
如何将Excel的数据写入到Accees?Aceess 是微软出品的桌面关系型数据库,也是在Office 大礼包中的套件之一,和大名鼎鼎的 Excel 不同;Access 主要承担了数据存储和SQL 查询的功能,需要的数据技能要更为结构化与进阶;总体来说,Excel 的强项在于灵活的分析数据,它的基本对象的单元格Cell;而 Access 的基本对象是Record,是一种结构化的数据形式,可以方便的存储及查询数十万级别的数据。
下面和大家分享一下,如何使用 VBA 将 Excel 和 Access 进行连接,并将数据写到 Access 数据库中;01 引入 Microsoft ActiveX Data Objects 6.0 Library在菜单栏工具->引入->找到Microsoft ActiveX Data Objects 6.0 Library,勾选引入02 在 Access 新建一个表•打开 Access 创建-表•右键左侧表名称 -> 设计视图•重命名表•设置需要的字段•右键打开的表名称 -> 保存•结果如图,我们需要记住表,以及字段名称03 在 Excel VBA 内写连接代码Sub Demo()Dim conn As ADODB.ConnectionSet conn = New ADODB.Connectiondatapath = ThisWorkbook.Path & "\Demo.accdb"With conn.Provider = "microsoft.ace.oledb.12.0".Open datapathEnd WithMsgBox "连接数据库成功!"End Sub我们需要先声明数据库连接对象ADODB.Connection;然后设置数据库路径:ThisWorkbook.Path是表明是当前文件夹路径,然后使用连字符&连接"\Demo.accdb"形成完整的数据库文件路径;点击运行,连接成功:04 在 Excel VBA 内写 SQL 代码我们可以将工作表的B1和B2单元格的内容,作为变量传入SQL语句我们需要向数据库写入数据,需要使用 SQL 代码:Insert Into语句Sql = "Insert Into Demo(姓名,年龄) Values('" & Sheet1.Cells(2, 1).Value & "','" & Sheet1.Cells(2, 2).Value & "')"其中第一段字符串,使用连字符将变量连接起来时,中间有个英文逗号'05 完整示例代码Sub Demo()Dim conn As ADODB.ConnectionSet conn = New ADODB.Connectiondatapath = ThisWorkbook.Path & "\Demo.accdb"With conn.Provider = "microsoft.ace.oledb.12.0".Open datapathEnd With'MsgBox "连接数据库成功!"Sql = "Insert Into Demo(姓名,年龄) Values('" & Sheet1.Cells(2, 1).Value & "','" & Sheet1.Cells(2, 2).Value & "')"conn.Execute (Sql)End Sub今天的教程,主要学习了:如何从Excel连接Access数据库,并写入数据;大家都学会了吗?。
使用VBA实现Excel与Access数据的交互
使用VBA实现Excel与Access数据的交互提要:本文介绍了如何使用VBA(Visual Basic for Applications)编程语言来实现Excel和Access之间的数据交互。
VBA是一种内置于Microsoft Office套件中的编程语言,它可以用于自动化各种任务,包括数据的导入和导出。
通过使用VBA,可以轻松地将Excel和Access的数据进行传输和共享,实现数据的有效管理和分析。
引言:在现代业务环境中,数据的处理和分析变得越来越重要。
Excel和Access都是常用的数据处理工具,它们的结合使用可以增强数据的管理和分析功能。
然而,手动将数据从Excel复制粘贴到Access中是一项费时费力的任务。
通过使用VBA编程语言,我们可以轻松地实现Excel和Access之间的数据交互,将数据的导入和导出自动化,提高工作效率。
一、连接Excel和Access数据库:要实现Excel和Access之间的数据交互,首先需要建立它们之间的连接。
以下是建立连接的步骤:1. 在Excel中,按下“Alt + F11”打开VBA编辑器。
2. 在VBA编辑器中,选择“工具”>“引用”,勾选“Microsoft ActiveX Data Objects X.X Library”。
3. 在Excel的VBA编辑器中,插入一个新的模块。
4. 在模块中编写以下代码来建立与Access数据库的连接:```vbaDim conn As ObjectSet conn = CreateObject("ADODB.Connection")conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;DataSource=C:\database.accdb"```在以上代码中,通过“CreateObject”函数创建了一个名为“conn”的连接对象,并通过“Open”方法打开了一个Access数据库文件(database.accdb)。
vb将数据导入access
Private Function ImportFromExcel(excelFile As String) As LongDim xlApp As Excel.ApplicationDim xlBook As Excel.WorkbookDim xlSheet As Excel.WorksheetDim rst As New ADODB.RecordsetDim nCount As Long, strCardNo As StringOn Error GoTo errHSet xlApp = New Excel.ApplicationSet xlBook = xlApp.Workbooks.Open(excelFile) '打开EXCEL文件Set xlSheet = xlBook.Sheets(1) '打开第一页(sheet)ImportFromExcel = 0'打开数据库rst.Open "...", pConn, adOpenKeyset, adLockOptimistic, adCmdText'开始导入。
导入过程检查数据是否有重复。
nCount = 1DostrCardNo = Trim(xlSheet.Cells(nCount, 1))'这里根据第一列数据为空判断记录结束If Len(strCardNo) = 0 ThenImportFromExcel = nCount - 1Exit DoEnd IfIf Not rst.EOF Then rst.Find ("STCardNO='" & strCardNo & "'")If rst.EOF Thenrst.AddNewrst("STCardNO") = Format(strCardNo, "0000000000")...rst.UpdateElseIf MsgBox("卡号:" & strCardNo & " 已经存在。
VB对Excel与Access的操作
pactDatabase Yml, Mbml
On error goto 0 Kill Ywjm
‘删除
Name Mbwjm As Ywjm ‘重命名
Exit Sub
Cw:
On Error GoTo 0
aa = MsgBox("请先关闭数据库文件", vbOKOnly, "提示")
End Sub
3、查询:
select * from 表名 where 字段=值 order by 字段
where:条件。可使用> < = >= <= <> like between
例:ID>5 and F_LR like ‘%中国%’
‘序号大于 5 并且内容中包含“中国”
order by:排序
例:order by ID desc ‘按序号降序排列
Adorst.Open P_lssj, Adocon, adOpenStatic, adLockReadOnly, adCmdTable P_lssjjlzs = Adorst.RecordCount '记录总数
If P_lssjjlzs > 0 Then
P_sjqsj = Adorst!f_rq
'第一条记录日期字段内容
cxtjselecttop10iddesc当数据库中数据太大时排序需要花很长时间此时不如先读数据取得数据总量然后关闭记录集再设置合适的条件打开记录集4查找
其中详细介绍 VB 对 Excel 与 Access 的操作,还是 Access 与 Excel 记录的相互导入。希望对你有用。
写入数据库,查询、分析、打印。找了很多的资料,现作一回顾总结,本篇主要写 vb 控制 excel 及 access。(以下均为本人的一些心得,写的不对的,请各位师傅指正。希望本文能对和我一样菜的朋 友有一些帮助。)
VB+Access系统中实现Excel和AcceSS数据库相互导入
3 主 窗体
主要 包 括 两 个单 选 按 钮 (pin 、o t n )如 图 1 示 。 o t 1 pi 2 o o 所
L rr 系统 库 ia b y P bi f sS r g 保 存 Ac e s文件 名 u l nA ti c n cs P bi f 1A t n 保 存 E c l 件 名 u l n sS r g c i xe文 P bi f c u t t g r 存 A c s u l o n I e e 保 cn As n c e s数 据 库 表 的 字段 数
P bi f lo n sItg r 存 E c l 据 库 表 的 字 段 数 u l u t e e 保 cnc A n xe数
Pu l on w b i c n As Ne ADODB. o n c i n c C n et o
声 明 一个 md b数 据 库 的 连 接
c n . e P o ie =M i r s f .e . L o n Op n“ r vd r c o o tJ t O EDB. . 4 O: Da a S u c =” f t o r e & n& ; e s s e u i n o a s “ P r itS c r y I f =F le t
V Ac es B+ cs 系统中实现 E c l Ac es xe 和 cs 数据库相 互导入
畅 育超
摘 要 : 以 “ 籍 管 理 数 据 库 ” 为 例 ,介 绍 V Ace 学 B+ cs s系统 中 利 用 A DO 记 录 集 实 现 E cl x e 和 A cs 数 据 库 相 互 导 入 的 程 序 设 计 方 法 。 ces
Access转Excel AND Excel导入Access代码
Access转Excel AND Excel导入Access代码JaAcc_Excel.Asp<!--#include file=common.asp--><%'********************************************** 'Code by ASP导出EXCEL通用'修改引用By 子言(JaStudio)'********************************************** Dim xibuaDim mysqlxibua = Request.QueryString("ids")if xibua="all" Thenmysql = "select * from singup"Elsemysql = "select * from singup where [系部]='"&xibua&"'"End Ifserver.scripttimeout=100000 '处理时间较长,设置值应大一点On Error Resume Nextset objExcelApp = CreateObject("Excel.Application")objExcelApp.DisplayAlerts = falseobjExcelApp.Application.Visible = false objExcelApp.WorkBooks.addset objExcelBook = objExcelApp.ActiveWorkBook set objExcelSheets = objExcelBook.Worksheetsset objSpreadsheet = objExcelBook.Sheets(1)Dim objRSSet objRS = Server.CreateObject("ADODB.Recordset") objRS.Open mysql,conn,1,3If objRS.EOF thenresponse.write("Error")respose.endEnd ifDim objField, iCol, iRowiCol = 1 '取得列号iRow = 1 '取得行号objSpreadsheet.Cells(iRow, iCol).Value = ""&xibua&"部的报名情况" '单元格插入数据objSpreadsheet.Columns(iCol).ShrinkToFit=true '设定是否自动适应表格单元大小(单元格宽不变)'设置Excel表里的字体objSpreadsheet.Cells(iRow, iCol).Font.Bold = True '单元格字体加粗objSpreadsheet.Cells(iRow, iCol).Font.Italic = False '单元格字体倾斜objSpreadsheet.Cells(iRow, iCol).Font.Size = 20 '设置单元格字号objSpreadsheet.Cells(iRow,iCol).ParagraphFormat.Alignment=1 '设置单元格对齐格式:居中objspreadsheet.Cells(iRow,iCol)="宋体" '设置单元格字体objspreadsheet.Cells(iRow,iCol).font.ColorIndex=2 '设置单元格文字的颜色,颜色可以查询,2为白色objSpreadsheet.Range("A1:F1").merge '合并单元格(单元区域)objSpreadsheet.Range("A1:F1").Interior.ColorIndex = 1 '设计单元络背景色'objSpreadsheet.Range("A2:F2").WrapText=true '设置字符回卷(自动换行)iRow=iRow+1For Each objField in objRS.Fields'objSpreadsheet.Columns(iCol).ShrinkToFit=true objSpreadsheet.Cells(iRow, iCol).Value = '设置Excel表里的字体objSpreadsheet.Cells(iRow, iCol).Font.Bold = True objSpreadsheet.Cells(iRow, iCol).Font.Italic = False objSpreadsheet.Cells(iRow, iCol).Font.Size = 20 objSpreadsheet.Cells(iRow, iCol).Halignment = 2 '居中iCol = iCol + 1Next 'objField'Display all of the dataDo While Not objRS.EOFiRow = iRow + 1iCol = 1For Each objField in objRS.FieldsIf IsNull(objField.Value) thenobjSpreadsheet.Cells(iRow, iCol).Value = ""ElseobjSpreadsheet.Columns(iCol).ShrinkToFit=true objSpreadsheet.Cells(iRow, iCol).Value = objField.ValueobjSpreadsheet.Cells(iRow, iCol).Halignment = 2 objSpreadsheet.Cells(iRow, iCol).Font.Bold = False objSpreadsheet.Cells(iRow, iCol).Font.Italic = False objSpreadsheet.Cells(iRow, iCol).Font.Size = 10'objSpreadsheet.Cells(iRow, iCol).Halignment = 2 objSpreadsheet.Cells(iRow,iCol).ParagraphFormat.Alignment=1End IfiCol = iCol + 1Next 'objFieldobjRS.MoveNextLoopDim SaveNameSaveName=xibuaDim objExcelDim ExcelPathExcelPath = "" & SaveName & ".xls" objExcelBook.SaveAs server.mappath(ExcelPath)Response.Write "<center><b>导出成功,请选择继续操作</b></center>"response.Write "<table width=90% bgcolor=gray bgcolor=CCCCCC cellspacing=1 cellpadding=3 align=center>"Response.Write "<tr align=center bgcolor=#6699CC style=color:white> <td>"response.write("<font color=green>√</font><a href='" & ExcelPath & "'>下载</a>") & " <font color=green>√</font><A href=javascript:history.back()>返回上一页</a>" Response.Write "</td></tr></table>" objExcelApp.Quitset objExcelApp = Nothing%>JaExcel_Acc.Asp<style>td,input,select,textarea,body{font-size:9pt}a{color:blue}a:hover{color:green}</style><%if session("xibu")="administrator" then'********************************************** 'Code by 子言(JaStudio)'作用:ASP操作Excel导入ACCESS'编写时间:2005.03.13 历时:4小时文件JaExcel.Asp JaAcc_Save.Asp'难点:Excel文件无确定字段的数据处理'解决方法: 循环输出所有,分开处理写进ACCESS '********************************************** If Request.QueryString("action")="do" ThenDim connDim StrConnDim RsDim SqlDim iDim ExNameExName = Request.Form("ExName")ExTName = Request.Form("ExTName")Set conn =Server.CreateObject("ADODB.Connection") StrConn="Driver={Microsoft Excel Driver (*.xls)};DBQ="&Server.MapPath("Excel/"&ExName)conn.Open StrConnSet rs = Server.CreateObject("ADODB.Recordset") Sql="select * from ["&ExTName&"$]"rs.Open Sql,conn,1,1%><center>[ <a href=admin.asp?action=exit>注销</a> | <a href=admin.asp>管理首页</a> | <a href=admin_item.asp>系统设置</a> <a href=javascript:backup()>备份数据库</a> | <a href=admin_JaMo.asp>报名模块编辑</a> | <a href=admin_JaSys.asp>系统帮助编辑</a> | <a href=admin_JaShow.asp>报名信息编辑</a> | <a href=JaExcel_Acc.Asp>导入Excel数据到ACCESS</a> ]</center><br><form method=post action="JaAcc_Save.Asp" name=form1 onSubmit="return chk(this)"><table width="500" border="0" align=center cellspacing=1 bgcolor=#CCCCCC><tr align=center height=20 bgcolor=#6699CC style=color:white><td colspan="4">导入数据列表(请确保字段没有错误)</td></tr><tr><td align="center"><input name=Count type=hidden value="<%=rs.Fields.Count%>"><%for i=0 to rs.Fields.Count-1%><input name=ExFName<%=i%> value="<%=Rs(i).Name%>" size="10"><%NextResponse.Write "</td></tr></table><table width=500 border=0 align=center cellspacing=1 bgcolor=#CCCCCC>"Response.Write "<tr bgcolor=white><tdalign=center>"Dim aa=0do while not rs.eoffor i=0 to rs.Fields.Count-1if i mod rs.Fields.Count = 0 thenResponse.Write "<br>"End if%><input name=ExCName<%=a%> value="<%=Rs(i)%>" size="10"><%a = a +1nextrs.MoveNextLoopResponse.Write "</td></tr><tr><td align=center><input name='A'type=hidden value="&a&"><input type=submit value=导入数据></td></tr></table>"Response.Write "</form>"rs.closeset rs=nothingconn.closeset StrConn=nothingResponse.EndEnd if%><style>td,input,select,textarea,body{font-size:9pt}a{color:blue}a:hover{color:green}</style><script language="JavaScript" type="text/JavaScript">function chk(){if (document.form1.ExName.value==""){alert("Excel文件名称不能为空!");document.form1.ExName.focus();return false;}if (document.form1.ExTname.value==""){alert("Excel数据表文件名称不能为空!"); document.form1.ExTname.focus();return false;}}</script><center>[ <a href=admin.asp?action=exit>注销</a> | <a href=admin.asp>管理首页</a> | <a href=admin_item.asp>系统设置</a> <a href=javascript:backup()>备份数据库</a> | <a href=admin_JaMo.asp>报名模块编辑</a> | <a href=admin_JaSys.asp>系统帮助编辑</a> | <a href=admin_JaShow.asp>报名信息编辑</a> | <a href=JaExcel_Acc.Asp>导入Excel数据到ACCESS</a> ]</center><br><table width="500" align=center cellpadding=5 cellspacing=1 bgcolor=#006699><tr bgcolor=#6699CC style=color:white align=center><td><b>导入数据注意事项</b><br>1:请确保你清楚Excel文件内容字段与导入数据库的字段相同<p>2:请确保你清楚Excel文件的表名正确如Sheet1<p> 3:请确保服务器上有该Excel文件存在于Excel文件夹里,如没有,请上传并记下文件名称<p>4:如有不明白请参考Excel文件夹里的[副本学生信息资料.xls],如填写:[Excel地址:副本学生信息资料.xls] [Excel导入数据表名:学生信息]<p>5:如有不明白可以直接联系我获得技术支持:QQ23638564 Email:kpggdf@</td></tr></table><form method="post" action="upload2.asp" enctype="multipart/form-data" name="form2"><table width="500" align=center cellpadding=5 cellspacing=1 bgcolor=#006699><tr bgcolor=#6699CC style=color:white align=center><td><input type=file name="sf_upfile" size="30"class=box><input type="submit" name="submit" value="上传" class="box"></td></tr></table></form></body></html><form method=post action="?action=do" name=form1 onSubmit="return chk(this)"><table width="500" align=center cellpadding=5 cellspacing=1 bgcolor=#006699><tr bgcolor=#6699CC style=color:white align=center><td width="183">Excel地址(如:JaStudio.xls)</td> <td width="217">Excel导入数据表名(如:Sheet1)</td><td width="64"></td></tr><tr bgcolor=white><td><input name=ExName value="" size="30"></td><td><input name=ExTname value="" size="30"><td><input type=submit value=导入数据> </tr></table></form><meta http-equiv="content-type" content="text/html;charset=gb2312"><style>td,input,select,body{font-size:9pt}</style><script>function backup(){window.open("admin_backupdata.asp","","Width=4 00,Height=300")}</script><%ElseResponse.Redirect "admin_xibu.asp"End If%>JaAcc_Save.Asp<!--#include file=common.asp--><%if session("xibu")="administrator" then'********************************************** 'Code by 子言(JaStudio)'数据分离与保存,其中数据分离写的辛苦'没这么上下也写不出来哈,真是累人。
用VBA实现excel与access数据库交互
⽤VBA实现excel与access数据库交互1、将access中数据导⼊excelPublic Sub ImportData()Dim mydata As String, mytable As String, SQL As StringDim cnn As ADODB.ConnectionDim rs As ADODB.RecordsetActiveSheet.Cells.Clearmydata = ThisWorkbook.Path & "\成绩管理.mdb" '指定数据库mytable = "考试成绩" '指定'建⽴与数据库的连接Set cnn = New ADODB.ConnectionWith cnn.Provider = "microsoft.jet.oledb.4.0".Open mydataEnd WithSQL = "select 班级,avg(数学) as 数学平均,avg(语⽂) as 语⽂平均," _& "avg(物理) as 物理平均,avg(化学) as 化学平均,avg(英语) as 英语平均, " _& "avg(体育) as 体育平均,avg(总分) as 总分平均 " _& "from " & mytable & " group by 班级"Set rs = New ADODB.Recordsetrs.Open SQL, cnn, adOpenKeyset, adLockOptimistic'复制字段名For i = 1 To rs.Fields.CountCells(1, i) = rs.Fields(i - 1).NameNext i'复制全部数据Range("A2").CopyFromRecordset rsrs.Closecnn.CloseSet rs = NothingSet cnn = NothingEnd Sub2、将excel数据导⼊accessSub 把Excel数据插⼊数据库中()'*******************************************'时间:2010-06-28'作者:bengdeng'功能:把当前⼯作表的数据增加到在同⼀⽬录下表数据库中'注意:要在⼯具/引⽤中引⽤microsoft activex date objects x.x' 其中x.x为版本号,可能会因为你安装的office的版本不同⽽不同,本例引⽤了2.5版'发布:'*******************************************Dim conn As ADODB.ConnectionDim WN As StringDim TableName As StringDim sSql As StringDim tStr As String'数据库名,请⾃⾏修改,路径与当前在同⼀⽬录WN = "表.mdb"'数据库的表名与当前⼯作表名⼀致TableName = Set conn = New ADODB.Connectionconn.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;" & _"Extended Properties=Excel 8.0;" & _"Data Source=" & ThisWorkbook.Path & "\" & conn.OpenIf conn.State = adStateOpen ThensSql = "Insert Into [;DataBase=" & ActiveWorkbook.Path & "\" & WN & "]." & TableName & " Select * From [" & & "$]" conn.Execute sSqlMsgBox "成功把数据插⼊到“" & TableName & "”中!", , ""conn.CloseEnd IfSet conn = NothingEnd Sub。
将Excel中数据导入到Access数据库中的方法
将Excel中数据导⼊到Access数据库中的⽅法复制代码代码如下:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head id="Head1" runat="server"><title>⽆标题页</title><style type="text/css">.style1{height: 16px;}.style3{height: 23px;}</style></head><body><form id="form1" runat="server"><div></div><table align="center" border="1" bordercolor="honeydew" cellpadding="0"cellspacing="0"><tr><td style="FONT-SIZE: 9pt; COLOR: #ff0000; BACKGROUND-COLOR: #ff9933; TEXT-ALIGN: center"class="style1"></td><td colspan="2"style="FONT-SIZE: 9pt; COLOR: #ffffff; HEIGHT: 16px; BACKGROUND-COLOR: #ff9933; TEXT-ALIGN: center">将Excel数据写⼊Access数据库中</td></tr><tr><td style="BACKGROUND-COLOR: #ffffcc; TEXT-ALIGN: center"></td><td style="BACKGROUND-COLOR: #ffffcc; TEXT-ALIGN: center"><iframe id="I1" name="I1" scrolling="yes" src="学⽣成绩.xls"style="WIDTH: 407px; HEIGHT: 280px"></iframe></td><td style="WIDTH: 190px; BACKGROUND-COLOR: #ffffcc; TEXT-ALIGN: center"><asp:GridView ID="GridView1" runat="server" CellPadding="4" Font-Size="9pt"ForeColor="#333333" GridLines="None" Width="228px"><FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /><RowStyle BackColor="#FFFBD6" ForeColor="#333333" /><SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" /><PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" /><HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /><AlternatingRowStyle BackColor="White" /></asp:GridView></td></tr><tr><td style="BACKGROUND-COLOR: #ff9900; TEXT-ALIGN: center" class="style3"></td><td style="HEIGHT: 23px; BACKGROUND-COLOR: #ff9900; TEXT-ALIGN: center"valign="top"><asp:Button ID="Button3" runat="server" Font-Size="9pt" onclick="Button1_Click"Text="Excel数据写⼊Access数据库中" /><asp:Label ID="Label1" runat="server" Text="Label" Visible="False"style="font-size: x-small"></asp:Label></td><td style="WIDTH: 190px; HEIGHT: 23px; BACKGROUND-COLOR: #ff9900; TEXT-ALIGN: center"> <asp:Button ID="Button2" runat="server" Font-Size="9pt" onclick="Button2_Click"Text="数据库中显⽰Excel数据" /></td></tr><tr><td> </td></tr></table></form></body></html>复制代码代码如下:using System;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;using System.Data.OleDb;public partial class _Default : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){}public OleDbConnection CreateCon(){string strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + Server.MapPath("UserScore.mdb") + ";User Id=admin;Password=;";OleDbConnection odbc = new OleDbConnection(strconn);return odbc;}protected void Button1_Click(object sender, EventArgs e){//定义Excel列表string StyleSheet = "Sheet1";//调⽤⾃定义LoadData⽅法,将Excel⽂件中数据读到ASPNET页⾯中LoadData(StyleSheet);//定义查询的SQL语句string sql = "select ID,⽤户姓名,试卷,成绩,考试时间 from Score";//创建Oledb数据库连接OleDbConnection con = CreateCon();con.Open();//打开数据库连接OleDbCommand com = new OleDbCommand(sql, con);//开始事务OleDbTransaction tran = con.BeginTransaction();com.Transaction = tran;//创建适配器OleDbDataAdapter da = new OleDbDataAdapter(com);OleDbCommandBuilder cb = new OleDbCommandBuilder(da);//创建DataSet数据集DataSet ds = new DataSet();//填充数据集da.Fill(ds);int curIndex = 0;if (ds.Tables[0].Rows.Count > 0){curIndex = Convert.ToInt32(ds.Tables[0].Rows[0][0]);}//创建⼀个内存表DataTable tb = this.getExcelDate();string selsql = "";for (int i = 0; i < tb.Rows.Count; i++){string UserName = tb.Rows[i][0].ToString();selsql = "select count(*) from Score where ⽤户姓名='" + UserName + "'";}//判断Excel⽂件中是否已经导⼊到Access数据库中if (ExScalar(selsql) > 0){Label1.Visible = true;Label1.Text = "<script language=javascript>alert('该Excle中的数据已经导⼊数据库中!');location='Default.aspx'; </script>";}else{//循环读取Excel⽂件中数据,并添加到Access事先创建好的数据库表中for (int i = 0; i < tb.Rows.Count; i++){DataRow dr = ds.Tables[0].NewRow();dr[0] = ++curIndex;dr[1] = tb.Rows[i][0];dr[2] = tb.Rows[i][1];dr[3] = tb.Rows[i][2];dr[4] = tb.Rows[i][3];ds.Tables[0].Rows.Add(dr);}try{da.Update(ds);//执⾏插⼊操作mit();//事务提交Label1.Visible = true;Label1.Text = "<script language=javascript>alert('数据导⼊成功!');location='Default.aspx';</script>";}catch{tran.Rollback();//事务回滚Label1.Visible = true;Label1.Text = "<script language=javascript>alert('数据导⼊失败!');location='Default.aspx';</script>";}finally{con.Close();//关闭数据库连接}}}protected void Button2_Click(object sender, EventArgs e){string sqlstr = "select * from Score";OleDbConnection conn = CreateCon();conn.Open();OleDbCommand mycom = new OleDbCommand(sqlstr, conn);OleDbDataReader dr = mycom.ExecuteReader();dr.Read();if (dr.HasRows){GetDataSet(sqlstr);}else{Label1.Visible = true;Label1.Text = "<script language=javascript>alert('数据库中没有数据信息,请先导⼊再查询!');location='Default.aspx'; </script>";}dr.Close();conn.Close();}public DataSet GetDataSet(string sqlstr){OleDbConnection conn = CreateCon();OleDbDataAdapter myda = new OleDbDataAdapter(sqlstr, conn);DataSet ds = new DataSet();myda.Fill(ds);GridView1.DataSource = ds;GridView1.DataBind();return ds;}public DataTable getExcelDate(){string strExcelFileName = Server.MapPath("学⽣成绩.xls");string strcon = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + strExcelFileName + ";" + "Extended Properties='Excel 8.0;HDR=YES;IMEX=1';";string sql = "select * from [Sheet1$]";OleDbDataAdapter da = new OleDbDataAdapter(sql, strcon);DataSet ds = new DataSet();da.Fill(ds);return ds.Tables[0];}public void LoadData(string StyleSheet){//定义数据库连接字符串 mstring strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" + Server.MapPath("学⽣成绩.xls") + ";Extended Properties=Excel 8.0";//创建数据库连接OleDbConnection myConn = new OleDbConnection(strCon);//打开数据链接,得到⼀个数据集myConn.Open();//创建DataSet对象DataSet myDataSet = new DataSet();//定义查询的SQL语句string StrSql = "select * from [" + StyleSheet + "$]";//创建数据库适配器OleDbDataAdapter myCommand = new OleDbDataAdapter(StrSql, myConn);//填充数据集中的数据myCommand.Fill(myDataSet, "[" + StyleSheet + "$]");//释放占有的资源myCommand.Dispose();//关闭数据库连接myConn.Close();}public int ExScalar(string sql){OleDbConnection conn = CreateCon();conn.Open();OleDbCommand com = new OleDbCommand(sql, conn);return Convert.ToInt32(com.ExecuteScalar());conn.Close();}}。
Excel中的数据导入到Access表中
数据在Access与Excel中互换(物理实现方法)本方法取至互连网,是实际应用型的方法,如果要用程序来实现的就不用看了一:在Microsoft OfficeAccess和Microsoft OfficeExcel之间存在多种交换数据的方法。
·若要将Access中的数据装入Excel,可以从Access数据表中复制数据并粘贴到Excel 工作表中,从Excel工作表连接到Access数据库,或者将Access数据导出到Excel工作表中。
·若要将Excel中的数据装入Access,可以从Excel工作表复制数据并粘贴到Access 数据表中,将Excel工作表导入Access表中,或者从Access表链接到Excel工作表。
注释·“导入”一词在Excel和Access中的意义各不相同。
在Excel中,导入指的是建立一个可刷新的永久数据连接。
在Access中,导入则指将数据装入Access中一次,但不建立数据连接。
·您不能将Excel工作簿保存为Access数据库。
Excel 和Access都不提供利用Excel 数据创建Access数据库的功能。
在Excel中使用Access数据如果数据在Access中,但您希望在Excel中使用这些数据:操作:交换的性质:将Access数据复制到Excel中临时将Access数据导出到Excel 定期从Excel连接到Access数据永久在Access中使用Excel数据如果数据在Excel中,但您希望在Access中使用这些数据:操作:交换的性质:将Excel数据复制到Access中临时将Excel数据导入到Access 定期从Access链接到Excel数据永久二.在Excel中使用Access数据您可能想在Excel工作簿中使用Access数据,以便利用数据分析和绘制图表功能、数据排列和布局的灵活性或其他一些Access中不可用的功能。
利用VB将EXCEL中的数据导入ACCESS
Dim extend_str As StringDim execl_cnn As New ADODB.ConnectionDim execl_rst As New ADODB.RecordsetDim execl_count_rst As New ADODB.Recordset '纪录数量Dim execl_field_rst As New ADODB.RecordsetDim execl_strconn As StringDim execl_strcmd As StringDim execl_count_str As StringDim insertStr As String'操作oracle数据库的记录集Dim rst As ADODB.RecordsetCommonDialog1.ShowOpenextend_str = Right(CommonDialog1.FileName, 3)If (extend_str = "xls") Thenexecl_cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _"Data Source=" & CommonDialog1.FileName & _";Extended Properties=Excel 8.0;"ElseIf (extend_str = "dbf") Thenexecl_cnn.ConnectionString = "Provider=MSDASQL.1;Driver=Microsoft Visual FoxproDriver;SourceType=DBF;DBQ=" & getDir(CommonDialog1.FileName)execl_cnn.OpenEnd IfIf (extend_str = "xls") Thenexecl_strcmd = "SELECT * from `Sheet1$` "execl_count_str = "SELECT count(*) from `Sheet1$` "execl_field_rst.Open execl_count_str, execl_cnnIf (execl_field_rst.Fields(0).Value = 0) Thenexecl_strcmd = "SELECT * from [" & getFileNoExt(getfile(CommonDialog1.FileName)) & "$] "execl_count_str = "SELECT count(*) from [" & getFileNoExt(getfile(CommonDialog1.FileName)) & "$] " End Ifexecl_field_rst.CloseElseIf (extend_str = "dbf") Thenexecl_strcmd = "SELECT * from " & CommonDialog1.FileNameexecl_count_str = "SELECT count(*) from " & CommonDialog1.FileName End Ifexecl_rst.Open execl_strcmd, execl_cnnexecl_count_rst.Open execl_count_str, execl_cnnIf (CommonDialog1.FileName <> "") Then'进度条设置ProgressBar1.Min = 0ProgressBar1.max = execl_count_rst.Fields(0).ValueIf (execl_rst.RecordCount) Then '如果有记录If (Option1.Value) Then '如果是仪器总库If (execl_rst.Fields.Count = 8) ThenSet rst = yg_gain_table_recordset("yg_device")execl_rst.MoveFirstDo While (Not execl_rst.EOF)rst.AddNewrst.Fields(0).Value = yg_getNextId("yg_device_id")rst.Fields(1).Value = execl_rst.Fields(0).Value & ""rst.Fields(2).Value = execl_rst.Fields(1).Value & ""rst.Fields(3).Value = execl_rst.Fields(2).Value & ""rst.Fields(4).Value = execl_rst.Fields(3).Value & ""rst.Fields(5).Value = execl_rst.Fields(4).Value & ""rst.Fields(6).Value = execl_rst.Fields(5).Value & ""rst.Fields(7).Value = execl_rst.Fields(6).Value & ""rst.Fields(8).Value = execl_rst.Fields(7).Value & ""rst.Updateexecl_rst.MoveNextProgressBar1.Value = ProgressBar1.Value + 1DoEventsLoopyg_free_recordset rstElseMsgBox "结构不一致"Exit SubEnd IfEnd IfIf (Option2.Value) Then '如果是外借仪器If (execl_rst.Fields.Count = 12) ThenSet rst = yg_gain_table_recordset("yg_out_device")execl_rst.MoveFirstDo While (Not execl_rst.EOF)rst.AddNewrst.Fields(0).Value = yg_getNextId("yg_out_device_id") rst.Fields(1).Value = execl_rst.Fields(0).Value & "" rst.Fields(2).Value = execl_rst.Fields(1).Value & "" rst.Fields(3).Value = execl_rst.Fields(2).Value & "" rst.Fields(4).Value = execl_rst.Fields(3).Value & "" rst.Fields(5).Value = execl_rst.Fields(4).Value & "" rst.Fields(6).Value = execl_rst.Fields(5).Value & "" rst.Fields(7).Value = execl_rst.Fields(6).Value & "" rst.Fields(8).Value = execl_rst.Fields(7).Value & "" rst.Fields(9).Value = execl_rst.Fields(8).Value & "" rst.Fields(10).Value = execl_rst.Fields(9).Value & "" rst.Fields(11).Value = execl_rst.Fields(10).Value & "" rst.Fields(12).Value = execl_rst.Fields(11).Value & "" rst.Updateexecl_rst.MoveNextProgressBar1.Value = ProgressBar1.Value + 1 DoEventsLoopyg_free_recordset rstElseMsgBox "结构不一致"Exit SubEnd IfEnd If。
Excel和Access间复制、导入和导出数据
Excel和Access间复制、导入和导出数据在Microsoft OfficeAccess和Microsoft OfficeExcel之间存在多种交换数据的方法。
·若要将Access中的数据装入Excel,可以从Access数据表中复制数据并粘贴到Excel 工作表中,从Excel工作表连接到Access数据库,或者将Access数据导出到Excel工作表中。
·若要将Excel中的数据装入Access,可以从Excel工作表复制数据并粘贴到Access 数据表中,将Excel工作表导入Access表中,或者从Access表链接到Excel工作表。
·“导入”一词在Excel和Access中的意义各不相同。
在Excel中,导入指的是建立一个可刷新的永久数据连接。
在Access中,导入则指将数据装入Access中一次,但不建立数据连接。
·您不能将Excel工作簿保存为Access数据库。
Excel 和Access都不提供利用Excel 数据创建Access数据库的功能。
在Excel中使用Access数据如果数据在Access中,但您希望在Excel中使用这些数据:在Access中使用Excel数据如果数据在Excel中,但您希望在Access中使用这些数据:在Excel中使用Access数据您可能想在Excel工作簿中使用Access数据,以便利用数据分析和绘制图表功能、数据排列和布局的灵活性或其他一些Access中不可用的功能。
将Access数据复制到Excel中您可以从Access的数据表视图复制数据,然后将数据粘贴到Excel工作表中。
1.启动Access,然后打开包含要复制的记录的表、查询或窗体。
2.在“起始页”选项卡上单击“视图”,然后单击“数据表视图”。
3.选择要复制的记录。
如果要选择特定列,请在相邻的列标题之间拖动。
4.在“开始”选项卡上的“剪贴板”组中,单击“复制”。
基于VB的ExceI与Access数据交换的实现
( 1 ) 在窗体 的通用 区声明对象变量 :
Op t i o n E x p l i c i t Di m e x l a p p As e x c e 1 . Ap p l i c a t i o n
Di m r o w As I n t e g e r ,c o l As I n t e g e r
S o u r c e = D: \ 图书管理 . md b ; P e r s i s t S e c u r i t yI n f o = F a l s e ”
c a n . C rs u o r L o c a t i o n =a d Us e Cl i e n t
F o r c o l =1 To r s t . F i e l d s . Co u n t .1
r o w =1
说 明: 声明 A DO编程模 型对 象 ( 2 ) 在窗体 的 L o a d事件 中建 立与数据库 的连 接
Di m SAs S t r i n g S= ” P r o v i d e r =Mi c r o s o t. f J e t . OL EDB. 4 . 0 : Da t a
e x l a p p . Ac t i v e Wo r k b o o k . C l o s e F a l s e ‘ 关闭E x c e l 文件 但不
保存 e x l a p p . Qu i t ‘ 退出 E x c e l 应 用 程 序 S e t e x l s h e e t =No t h i n g‘ 释放 E x c e l 工 作 表 对 象
S c r e e n . Mo u s e P o i n t e r =v b De f a u l t En d S u b
VB中Access与Excel的无缝连接
VB中Access与Excel的无缝连接摘要:提出在VB(Visual Basic)中利用中间件ADO来实现Access与Excel 之间的数据访问。
设计了引用Microsoft Excel类型库的Access数据库的VB应用程序的方法。
关键词:VB;Access数据库;Excel;ADO技术0 引言VB是常用的应用软件开发工具之一,通常在VB中操作access数据库的数据时,由于VB的报表功能有限,而且一但报表格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便。
因此很多程序员通过中间件ADO (ActiveX Data Object,ActiveX数据对象)来充分利用EXECL的强大报表功来实现报表功能。
但由于VB与EXCEL由于分别属于不同的应用系统,如何把它们有机地结合在一起,是一个值得我们研究的课题。
1 Microsoft的ADO技术ADO是Microsoft处理关系数据库和非关系数据库中信息的最新技术,它基于微软最新的被称为OLE DB的数据访问模式。
OLE DB是一个基于COM的规范,定义了数据显示的方法和客户访问它的方法。
OLE DB是一个低级层,在客户应用程序与数据提供者封装的数据源之间起中间件的作用。
OLE DB体系结构包含三类OLE DB模块:一是消费者模块(consumer),它是一个应用程序,作为纯OLE DB环境中的客户,一般用C++源程序编写。
二是提供者模块(provider),它深入数据源,负责更新数据、返回选择的记录子集。
三是服务模块(services),它在消费者与提供者之间扮演有趣的角色:它将标准的数据访问过程封装在少数新的接口和软件服务中。
OLE DB服务可以与传给调用者的数据相互作用,通过更强大的服务,过滤数据并使数据可用。
一个OLE DB数据提供者的COM接口在逻辑上进行了分组,从而形成了一个对象层次结构。
这个对象模型显示了客户访问提供者提供的真正数据的逐步过程。
如何将Excel表格数据导入Access
如何将Excel表格数据导入Access
在使用Access的过程中,经常需要把外部数据,比如记事本文本数据、Excel表格数据导入到数据库中。
下面是店铺给大家整理的一些有关将Excel导入Access的方法,希望对大家有帮助!
将Excel表格数据导入Access的方法
在Access工具栏中选择【外部数据】,在这里可以将外部的Access、Excel、文本文件、XML文件等外部数据导入到数据库中。
首先我们选择【Excel】。
软件会弹出【获取外部数据】的操作向导,点击【浏览】按钮找到需要导入的数据文件。
预览导入的数据,确认是否【第一行包含列标题】。
因为我们的Excel表格中没有列标题,都是需要导入的数据,需要去掉这个勾选。
选择【字段选项】,可以重新设置每个字段的名称、数据类型等内容。
选择主键,可以让Access自动添加主键,也可以自己选择一列作为主键或者选择不要主键。
最后输入要导入的新表的名称,点击【完成】。
8可以看到已经将Excel表格的数据成功导入到Access的一个新表中。
END。
ExcelVBA把Excel导入到Access中(TransferSpreadsheet)
ExcelVBA把Excel导入到Access中(TransferSpreadsheet)导入单个EXCEL文件Sub Export_Sheet_Data_ToAccess()Dim myFile As VariantDim AppAccess As New Access.ApplicationDim wbPath As StringmyFile = Application.GetOpenFilename("Excel Files (*.xls), *.xls")If VarType(myFile) = vbBoolean ThenMsgBox "CanCel by User!"Exit SubEnd IfApplication.ScreenUpdating = FalsewbPath = ThisWorkbook.Path & "\"With AppAccess.OpenCurrentDatabase wbPath & "CheckIn.mdb", True.DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "data", myFile, True.CloseCurrentDatabaseEnd WithApplication.ScreenUpdating = TrueMsgBox myFile & Chr(10) & " Export is Done!"Set AppAccess = NothingEnd Sub导入多个EXCEL文件Sub Export_MultiSheets_Data_T oAccess()Dim myFiles As Variant, vItem As VariantDim AppAccess As New Access.ApplicationDim wbPath As StringmyFiles = Application.GetOpenFilename( _"Excel Files (*.xls), *.xls", , "Select All Files", , True)If VarType(myFiles) = vbBoolean ThenMsgBox "CanCel by User!"Exit SubEnd IfApplication.ScreenUpdating = FalsewbPath = ThisWorkbook.Path & "\"With AppAccess.OpenCurrentDatabase wbPath & "CheckIn.mdb", TrueIf IsArray(myFiles) ThenFor Each vItem In myFiles.DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "data", vItem, TrueNextEnd If.CloseCurrentDatabaseEnd WithApplication.ScreenUpdating = TrueMsgBox " Export is Done!"Set AppAccess = NothingEnd Sub导入一个工作簿下的所有工作表Sub Export_Sheets_Data_T oAccess()Dim myFile As VariantDim AppAccess As Access.ApplicationDim wbPath As StringDim objWb As WorkbookDim rngData As RangeDim lRow As LongDim lCol As LongDim arr() As VariantDim iSht As IntegerSet AppAccess = New Access.ApplicationmyFile = Application.GetOpenFilename("Excel Files (*.xls), *.xls")If VarType(myFile) = vbBoolean ThenMsgBox "CanCel by User!"Exit SubEnd IfApplication.ScreenUpdating = FalseSet objWb = GetObject(myFile)ReDim arr(1 To objWb.Sheets.Count)For iSht = 1 To objWb.Sheets.CountWith objWb.Sheets(iSht)lRow = .[a65536].End(xlUp).RowlCol = .[iv1].End(xlT oLeft).ColumnSet rngData = .Range(.Cells(1, 1), .Cells(lRow, lCol))arr(iSht) = .Name & "!" & rngData.Address(0, 0)End WithNextobjWb.Close FalseSet objWb = NothingwbPath = ThisWorkbook.Path & "\"With AppAccess.OpenCurrentDatabase wbPath & "Database.mdb", TrueFor iSht = 1 To UBound(arr).DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _"data", myFile, True, arr(iSht)Next.CloseCurrentDatabaseEnd WithApplication.ScreenUpdating = TrueMsgBox myFile & Chr(10) & " Export is Done!"Set AppAccess = NothingEnd Sub。
vb.net如何把excel中的表导入到access数据库中
如何把excel中的表导⼊到access数据库中2010-06-07 20:43⼀、⾸先简要回顾⼀下如何操作Excel表先要添加对Excel的引⽤。
选择项⽬-〉添加引⽤-〉COM-〉添加Microsoft Excel 9.0。
(不同的office讲会有不同版本的dll⽂件)。
using Excel;using System.Reflection;//产⽣⼀个Excel.Application的新进程Excel.Application app = new Excel.Application();if (app == null){statusBar1.Text = "ERROR: EXCEL couldn't be started!";return ;}app.Visible = true; //如果只想⽤程序控制该excel⽽不想让⽤户操作时候,可以设置为falseerControl = true;Workbooks workbooks =app.Workbooks;_Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet); //根据模板产⽣新的workbook// _Workbook workbook = workbooks.Add("c:\\a.xls"); //或者根据绝对路径打开⼯作簿⽂件a.xlsSheets sheets = workbook.Worksheets;_Worksheet worksheet = (_Worksheet) sheets.get_Item(1);if (worksheet == null){statusBar1.Text = "ERROR: worksheet == null";return;}// This paragraph puts the value 5 to the cell G1Range range1 = worksheet.get_Range("A1", Missing.Value);if (range1 == null){statusBar1.Text = "ERROR: range == null";return;}const int nCells = 2345;range1.Value2 = nCells;⼆、将Excel⽤户界⾯嵌⼊到⾃⼰的Windows Form中由于⽬前,C#和都不⽀持OLE技术(参见微软⽀持中⼼Info:304562),,所以只有使⽤WebBrowser控件来完成此功能。
vb将数据导入access
vb将数据导入accessPrivate Function ImportFromExcel(excelFile As String) As LongDim xlApp As Excel.ApplicationDim xlBook As Excel.WorkbookDim xlSheet As Excel.WorksheetDim rst As New ADODB.RecordsetDim nCount As Long, strCardNo As StringOn Error GoTo errHSet xlApp = New Excel.ApplicationSet xlBook = xlApp.Workbooks.Open(excelFile) '打开EXCEL 文件Set xlSheet = xlBook.Sheets(1) '打开第一页(sheet)ImportFromExcel = 0'打开数据库rst.Open "...", pConn, adOpenKeyset, adLockOptimistic, adCmdText'开始导入。
导入过程检查数据是否有重复。
nCount = 1DostrCardNo = Trim(xlSheet.Cells(nCount, 1))'这里根据第一列数据为空判断记录结束If Len(strCardNo) = 0 ThenImportFromExcel = nCount - 1Exit DoEnd IfIf Not rst.EOF Then rst.Find ("STCardNO='" & strCardNo & "'")If rst.EOF Thenrst.AddNewrst("STCardNO") = Format(strCardNo, "0000000000")...rst.UpdateElseIf MsgBox("卡号:" & strCardNo & " 已经存在。
VB+Access系统中实现Excel和Access数据库相互导入
VB+Access系统中实现Excel和Access数据库相互导入畅育超
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】2010(000)003
【摘要】以"学籍管理数据库"为例,介绍VB+Access系统中利用ADO记录集实现Excel和Access数据库相互导入的程序设计方法.
【总页数】4页(P39-42)
【作者】畅育超
【作者单位】
【正文语种】中文
【相关文献】
1.EXT系统中Excel数据导入的设计和实现 [J], 王进
2.在钽丝生产系统中实现从Excel向Access导入数据 [J], 马金成
3.利用VB实现将Access数据库导出到Excel文件中 [J], 王洪香;王志刚
4.利用VB实现将Access数据库导出到Excel文件中 [J], 王洪香;王志刚
5.利用VB6实现Access数据库到Excel的数据导入 [J], 洪蕾
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
adOpenDynamic,adLockOptimistic’打开记录集 rs.MoveLast i=rst.RecordCount Do While Not rst.EOF On Error Resume Next rs.AddNew For s=0 To fnlcount一1 rs.Fields(s)=rst.Fields(s) ’把ExceI的记录写入Access表中 Next s rS.MoveNext rst.MoveNext i=i一1 If i=0 Then faccess.Caption=。数据导入完毕!。 rs.Update
EndWith
sr.Close Set sr=Nothing cmdl.Enabled=True End Sub
■■******量*■量***,W-******■**鲁*****■******蕾*****■●警*
Private Sub imgl—Click() Dim rs As New ADODB.Recordset
(2)打开Access文件窗体,如图3所示。
图3
1)该窗体包括的主要控件有:文本控件(textl)用于显 示所选文件路径;图像控件(im92)用于打开对话框;对话框 控件(edl2)、组合框(coral)用于显示表的名称; 网格控 件(ms91)用于显示Access数据库中表的结构信息(字段名 称、字段大小、字段类型);命令按钮(cmdl)用于执行“导 入”命令。
End If lf conn.State=adStateOpen Then’判断conn连接的状态 conn.Close coml.Clear End If CalI mdbcon Set rs=conn.OpenSchema(adSchemaTables)
’把数据库的结构赋给了记录集rs Do Until rs.EOF If Left(rs!table—name,4)<>。MSys。Then cornl.Addltem rs J table—name 7给comb01控件赋值 End If rS.MoveNext
参考文献 【1】肖奕.ASP.NET 2.0数据库入门经典.第4版,北京:清华
大学出版社,2006. 【2】崔良海.ASP.NET 2.0实用教程(C#版).北京:人民邮
电出版社.2008. (收稿日期:2009-12-26)
39
万方数据
ห้องสมุดไป่ตู้
,。。‘‘。。‘‘。。。。。。。。。‘’。。。。。。。。‘。‘‘’。。。。‘。‘。‘‘’。。。。‘’。。。。。。。’’。。。‘。。‘。。
EndWith
End Sub
3 主窗体
主要包括两个单选按钮(optionI、option2)如图1所示。
图1
主要代码如下: Private Sub Optionl一Click() fexcel.Show7显示导入主窗体 Me.Hide End Sub Private Sub Option2一Click() outform.Show’显示导出主窗体 Me.Hide End Sub
End Sub
*●*●*********"IP"If●*■*■●,********●**■*量量●■●●●****菁
Private Sub cornl_Click(1’组合框的单击事件 Dim As Integer Set d91.DataSource=Nothing d91.Refresh Label3.Visible=True Dim oRS As New ADODB.Recordset oRS.Open。Select+from r&coml.Text&。】-, cn,adOpenStatic,adLockOptimistic ’打开组合框所对应表的记录集 oRS.Update i=oRS.RecordCount fnlcount=oRS.Fields.Count Label3.Caption=。共有。&i&“条记录一显示该表的记录数 Labet4.Caption=。共有。&oRS.Fields.Count&’个字段。 ’显示该表的字段数 Set d91.DataSource=oRS’给datagrid控件赋值 d91.Refresh cmdl,Enabled=True End Sub
匿蔓圄 IIII R·.DmB^SE…………一………………………………………………………………………………..…………”-.
VB+Access系统中实现Excel和Access 数据库相 互导入
畅育超
摘 要:以“学籍管理数据库”为例,介绍VB+Access系统中利用ADO记录集实现Excel和 Access数据库相互导入的程序设计方法。 关键词:数据库;VB+Access;ADO;VB控制Excel
Public fnlcount AS Integer’保存ExceI数据库表的字段数
Public conn As New ADODB.Connection 7声明一个mdb数据库的连接 Public ca As New ADODB.Connection ’声明一个xls数据库的连接 Public Sub mdbcon()’连接Access数据库 conn.0pen。Provider=Microsoft.Jet.OLEDB.4.0: Data Source=。&fn&。;Persist Security lnfo=False。 conn.CursorLocation=adUseClient7声明游标类型 End Sub Public Sub xlscon()7连接Excel Set cn=New ADODB.Connection
实用第一./智慧密集
....................................................................—,
4导入窗体
(1)打开Excel文件窗体,如图2所示。
图2
1)该窗体包括的主要控件有:文本控件(textl)用于显 示所选文件路径;图像控件(im92)用于打开对话框;对话框 控件(cdl2)、组合框(coml)用于显示表的名称;网格控件 (d91)用于显示Excel表中的记录;命令按钮(cmdl)用于调 用下一个窗体。
·S£·SE·S芒·S芒.s芒心£·S芒·蛊毫-S£d芒-SE·昱曼-S!·毒£·S£·S蔓·S£·S芒dE·毫£d要●S£砖£d£·童芒.毫芒·皇芒.s芒d曼-蛊E·S芒.毫£.s!·毒要.{【芒.s曼砖芒一£心芒.!!E心£-.s纵E.毫£础芒d芒
现远程存取Access数据库的功能.对程序设计能起到积极的 作用。
.Rows=sr.Fields.Count+1 For P=1 To sr.Fields.Count
.TextMatrix(p.0)=P .TextMatrix(p,1)=sr.Fields(p一1).Name .TextMatrix(p,2)=sr.Fields(p一1).Type .TextMatrix(p。3)=sr.Fields(p一1).DefinedSize Next P
40
万方数据
’匿蔓围
---···.DJ帆BASE--··-···----·-··---··-·--·一·---··-···-···-···---·---····--··---·一-一-----·一·--··-·----·--·-一-----··---·-··--···-·-------··
With msgl’给msgl控件赋值
2公共变量及模块
首先要引用“Microsoft ActiveX Data Objects2.6 Library”和 “Microsoft Excel l 1.O 0bjects
Library 7系统库 Public fn As String’保存Access文件名 Public fn l As String’保存Excel文件名 Public fncount As Jnteger’保存Access数据库表的字段教
Loop rs.Close Set rs=Nothing End Sub
●***●■■*并量■*●●****■●●●*****■*●*■●■■**■蕾●鲁善善*}*瞢量
Private Sub cmdl—Click()’导人数据 Dim As Integer Dim s As Integer Dim rst As New ADODB.Recordset Dim rs As New ADODB.Recordset If fnl count<=fncount Then’判断两表的字段数 rst.Open。Select’from【-&fexcel.coml.Text&’1I,cn, adOpenDynamic’打开记录集 rs.Open。select’from。&coml.Text&一,conn,
2)主要代码 Private Sub coml—Click() Dim PAs Integer SF.Open corn 1.Text,coon,adOpenKeyset,adLockOptimistic Label3.Visible=True Label3.Caption=‘共有。&sr.Fields.Count&‘个字段。 fncount=sr.Fields.Count
2)主要代码: Private Sub im92一Click(J Label3.Visible=False corn 1.Clear Dim rsxls As New ADODB,Recordset cdl 2.Filter=。Excel文件(*.xls)l’.xlsl所有文件《。.’)I*.”