VBAccess系统中实现Excel和Access数据库相互导入
- 格式:pdf
- 大小:354.14 KB
- 文档页数:6
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?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(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)。
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 & " 已经存在。
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数据库交互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数据库中的⽅法复制代码代码如下:<%@ 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();}}。
数据在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中不可用的功能。
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间复制、导入和导出数据在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中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
在使用Access的过程中,经常需要把外部数据,比如记事本文本数据、Excel表格数据导入到数据库中。
下面是店铺给大家整理的一些有关将Excel导入Access的方法,希望对大家有帮助!
将Excel表格数据导入Access的方法
在Access工具栏中选择【外部数据】,在这里可以将外部的Access、Excel、文本文件、XML文件等外部数据导入到数据库中。
首先我们选择【Excel】。
软件会弹出【获取外部数据】的操作向导,点击【浏览】按钮找到需要导入的数据文件。
预览导入的数据,确认是否【第一行包含列标题】。
因为我们的Excel表格中没有列标题,都是需要导入的数据,需要去掉这个勾选。
选择【字段选项】,可以重新设置每个字段的名称、数据类型等内容。
选择主键,可以让Access自动添加主键,也可以自己选择一列作为主键或者选择不要主键。
最后输入要导入的新表的名称,点击【完成】。
8可以看到已经将Excel表格的数据成功导入到Access的一个新表中。
END。
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。
如何把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将数据导入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数据库相互导入畅育超
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】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], 洪蕾
因版权原因,仅展示原文概要,查看原文内容请购买。