精华内容
下载资源
问答
  • ado excelaccess

    2009-10-27 16:05:00
    做了好久,出了很多错误,不过最终还是做好了^_^原理是从EXCEL表中读一条记录出来,然后插入到ACCESS中。int CManage::RecordFromExcelToAccess(CString excelPathName) //将ExcelFileName中的数据导入Access...

    做了好久,出了很多错误,不过最终还是做好了^_^

    原理是从EXCEL表中读一条记录出来,然后插入到ACCESS中。

    int CManage::RecordFromExcelToAccess(CString excelPathName)   //将ExcelFileName中的数据导入到Access数据库中
    {
     _ConnectionPtr excelConPtr,accessConPtr;
     accessConPtr.CreateInstance(__uuidof(Connection));//初始化
     excelConPtr.CreateInstance(__uuidof(Connection));//初始化
     CString excelConString=L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+excelPathName+L";Extended Properties=Excel 8.0;";
     CString accessConString=L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Information.mdb";
     //打开数据库和Excel表格文件
     try
     {
      accessConPtr->Open(accessConString.AllocSysString(),"","",adModeUnknown);
      excelConPtr->Open(excelConString.AllocSysString(),"","",adModeUnknown);
     }
     catch (_com_error* e)
     {
      MessageBox(e->Description());
      return 0;
     }


     CString excelSqlString=L"select * from [sheet$]";
     _RecordsetPtr   pExcelRecordset;
     pExcelRecordset.CreateInstance(__uuidof(Recordset));
     //打开记录集
     try
     {  
      pExcelRecordset->Open(excelSqlString.AllocSysString(),
       excelConPtr.GetInterfacePtr(),
       adOpenDynamic,
       adLockOptimistic,
       adCmdText);
     }
     catch(_com_error e)
     {
      excelConPtr->Close();
      MessageBox(e.Description());
      return 0;
     }
     //开始读取数据
     int count=0;
     _variant_t var;
     _RecordsetPtr p;
     _variant_t v;
     CString csSql;
     CString csClass,csNumber,csName,csUnit,csTradePrice,csRetailPrice;
     while(!pExcelRecordset->adoEOF)
     {  
      try
      {
       var=pExcelRecordset->GetCollect(_variant_t("车型")); 
       csClass=_com_util::ConvertBSTRToString(_bstr_t(var));
       var=pExcelRecordset->GetCollect(_variant_t("配件编码"));
       csNumber=_com_util::ConvertBSTRToString(_bstr_t(var));
       var = pExcelRecordset->GetCollect(_variant_t("配件名称"));
       csName=_com_util::ConvertBSTRToString(_bstr_t(var));
       var=pExcelRecordset->GetCollect(_variant_t("单位"));
       csUnit=_com_util::ConvertBSTRToString(_bstr_t(var));
       var=pExcelRecordset->GetCollect(_variant_t("单价"));
       csTradePrice=_com_util::ConvertBSTRToString(_bstr_t(var));
       var=pExcelRecordset->GetCollect(_variant_t("建议零售价"));
       csRetailPrice=_com_util::ConvertBSTRToString(_bstr_t(var));
      }
      catch (_com_error e)
      {
       if(pExcelRecordset->State==1)
        pExcelRecordset->Close();
       if(excelConPtr->State==1)
        excelConPtr->Close();
       if(accessConPtr->State==1)
        accessConPtr->Close();
       MessageBox(e.Description());
       return count;
      }
      csSql=L"select * from data where class='"+csClass+L"' and number='"+csNumber+L"'";
      try
      {
       p=accessConPtr->Execute(csSql.AllocSysString(),&v,adCmdText);
       if(p->adoEOF)
       {
        csSql=L"insert into data values('"+csClass+L"','"+csNumber+L"','"+csName+L"','"+csUnit+L"','"+csTradePrice+L"','"+csRetailPrice+L"','0')";
        accessConPtr->Execute(csSql.AllocSysString(),&v,adCmdText);
        count++;
       }
      }
      catch(_com_error e)
      {
       if(pExcelRecordset->State==1)
        pExcelRecordset->Close();
       if(excelConPtr->State==1)
        excelConPtr->Close();
       if(accessConPtr->State==1)
        accessConPtr->Close();
       MessageBox(e.Description());
       return count;
      }

      pExcelRecordset->MoveNext();
     }
     if(pExcelRecordset->State==1)
      pExcelRecordset->Close();
     if(excelConPtr->State==1)
      excelConPtr->Close();
     if(accessConPtr->State==1)
      accessConPtr->Close();
     return count;
    }

    展开全文
  • 利用ADOEXCEL批量导入ACCESS中,希望对大家有所助益
  • excel导入access

    千次阅读 2009-12-01 13:49:00
    excel导入access ,引用ADOPrivate Sub Command1_Click() Dim conn As ADODB.Connection Set conn = New ADODB.Connection On Error Resume Next conn.ConnectionString = "Provider=Microsoft.Jet.OLED

    'excel导入access ,引用ADO
    Private Sub Command1_Click()
        Dim conn As ADODB.Connection
        Set conn = New ADODB.Connection
        On Error Resume Next
        conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & App.Path & "/dbemp.mdb;" & "Persist Security Info=False"
        conn.Open
        conn.Execute "Drop Table [Emptable]"
        conn.Close
        ExportExcelSheetToAccess "Sheet1", "D:/Test.xls", "Emptable", "D:/dbemp.mdb"
    End Sub

    Private Sub ExportExcelSheetToAccess(sSheetName As String, sExcelPath As String, sAccessTable As String, sAccessDBPath As String)
        Dim db As Database
        Dim rs As Recordset
        Set db = OpenDatabase(sExcelPath, True, False, "Excel 8.0")
        Call db.Execute("Select * into [;database=" & sAccessDBPath & "]." & sAccessTable & " from [" & sSheetName & "$]")
        MsgBox "导入成功!", vbInformation, "提示"
        'ReShow
    End Sub

    原帖地址:

    http://topic.csdn.net/u/20091125/20/210a5287-3079-4e4d-9a08-02c9895154cc.html

    见1楼我的回答

    http://topic.csdn.net/u/20091126/18/b971a84f-72e0-48c8-b3e8-f2701354018a.html

    参考6-7楼我的回答

     

    展开全文
  • vb连接access excel步骤 excel 导入access

    千次阅读 2011-04-15 19:31:00
    第一步 新建vb工程 新建数据库   第二步 引入数据库环境: ms activiteX data OBJECTS 2.8 LIBRARY ...ms excel 11.0 ...datagrid:可以直接从表格修改数据库数据 但是不能设置每...hflexgrid:支持ado 可以设置每行显

    第一步

    新建vb工程 新建数据库

     

    第二步

    引入数据库环境:

    ms activiteX data  OBJECTS 2.8 LIBRARY

    ms excel 11.0

    引入显示控件:

    常用的有三个

    datagrid:可以直接从表格修改数据库数据 但是不能设置每行的颜色  推荐2st

    flexgrid:可以显示数据库数据 只读的

    hflexgrid:支持ado 可以设置每行显示数据的颜色  推荐1st

     

    第三步:编写代码 将数据库数据筛选显示到表格控件里面

    ----------------------------------------------------------------------

     

    下面给出我写的vb连接access 和excel的源代码

    ----------------------------------------------------------------------

     

     

     

    全部源代碼

    '-------define hong------------
    Dim ConStr As String
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    
    Dim cn1 As ADODB.Connection
    Dim rs1 As ADODB.Recordset
    
    Private statestring As String
    
    Private Sub Command1_Click()
    Dim cnn As ADODB.Connection
    Set cnn = New ADODB.Connection
    Dim Source As String
    
    CommonDialog1.Filter = "All Files (*.*)|*.xls"
    CommonDialog1.FilterIndex = 2
    CommonDialog1.ShowOpen
    Text3.Text = CommonDialog1.FileName
     Source = CommonDialog1.FileName
    With cnn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "Data Source=" & Source & ";Extended Properties=Excel 8.0;"
    .Open
    .Execute "INSERT INTO [toolsok] IN '" & App.Path & "\toolsdemo.mdb' SELECT * FROM [Sheet1$] "
    .Close
    End With
    MsgBox "ok"
    End Sub
    
    Private Sub Command2_Click()
    On Error GoTo ErrHandler
    CommonDialog1.Filter = "All Files (*.*)|*.xls"
    CommonDialog1.FilterIndex = 2
    CommonDialog1.ShowOpen
    Text3.Text = CommonDialog1.FileName
    Exit Sub
    ErrHandler:
    End Sub
    
    Private Sub Form_Load()
    Set cn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")
    ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & App.Path & "\toolsdemo.mdb;Persist Security Info=False"
    '------------------change
    cn.Open ConStr
    cn.CursorLocation = adUseClient
      Select Case cn.State
        Case adStateClose
             statestring = "adStateClosed"
        Case adStateOpen
             statestring = "adStateOpen"
      End Select
      If statestring = "adStateClosed" Then
    MsgBox "CONNECT ERROR!", , statestring
    Else
    End If
    '----------open the table------------------
    rs.Open "SELECT * FROM toolsok order by 識別碼 desc", cn, 2, 3
    Set DataGrid1.DataSource = rs
    Text4.Text = rs.d
    DataGrid1.Refresh
    Call show_excel
    End Sub
    
    Private Function show_excel()
    Set cn1 = New ADODB.Connection
    Set rs1 = CreateObject("ADODB.Recordset")
    
    Dim XLS_FILE As String
    Set cn1 = CreateObject("ADODB.Connection")
    Set rs1 = CreateObject("ADODB.Recordset")
    cn1.Open "provider=Microsoft.Jet.OLEDB.4.0;" & "data source=" & App.Path & "/excel.xls;" & "Extended Properties=Excel 8.0;"
    rs1.Open "select * from [sheet1$]", cn1, 3, 3
    
    Text2.Text = rs1.RecordCount
    Set MSHFlexGrid1.DataSource = rs1
    MSHFlexGrid1.Refresh
    End Function
    


    VB壓縮access2003

    '工程引入Microsoft Jet and Replication Objects Library
    Private Sub Command1_Click()
    Dim path, path1 As String
    Dim FIXDB As New JRO.JetEngine
    path = App.path & "\base\tmsdata.mdb"
    path1 = App.path & "\base\tmsdata_tmp.mdb"
    FIXDB.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path, _
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path1


    Kill path  '刪除源文件
    FileCopy path1, path  '生成壓縮後的源文件
    Kill path1            '刪除緩存的文件
    MsgBox " OK"
    End Sub

    展开全文
  • ASP实现Excel导入Access数据库

    千次阅读 2011-06-16 13:25:00
    导入方式有很多,思路有两种:1、用户直接打开本地Excel文件,通过程序直接导入Access数据库;2、用户打开本地Excel文件,通过程序上传至固定文件夹,然后通过程序将数据导入Access数据库两种方式相比较,方法2比方法...

    导入方式有很多,思路有两种:

    1、用户直接打开本地Excel文件,通过程序直接导入Access数据库;

    2、用户打开本地Excel文件,通过程序上传至固定文件夹,然后通过程序将数据导入Access数据库

    两种方式相比较,方法2比方法1更为适用。

    一开始,使用第一种方法,本机测试通过,但是通过网络访问则会出现错误提示:'80040e37',并提示找不到指定的文件。后来才发现,要使用此方法实现数据导入,必须设定服务器的控制权限为完全控制,还需要将Excel文件所在的盘符设置默认共享~ 这样看来这种方法不是很可取,对服务器安全性有影响。

    如果用第二种方式实现,没有上述的权限限制,只需要结合文件上传就能够避免'80040e37'错误产生。

    先附上方式一所用函数:

    '-------------------------------------------------------------------------------------
    'Exce导入到SQL
    '参数:FileExce excel表格路径; sheet: excel表格名,默认为sheet1
    '
    '-------------------------------------------------------------------------------------
    Function ExceToSql(FilePath,sheet,pro_type)
    Dim PatnNow
    if sheet="" then sheet="sheet1"
    PatnNow=FilePath
        'PatnNow="uploadfile/ultrawebgrid1.xls"

    '=====================ASP读取EXCEL注事项===========================
    'i)将Excel97或Excel2000生成的XLS文件(book)看成一个数据库,其中的每一个工作表(sheet)看成数据库表
    'ii)ADO假设Excel中的第一行为字段名.所以你定义的范围中必须要包括第一行的内容
    'iii)Excel中的行标题(即字段名)不能够包含数字. Excel的驱动在遇到这种问题时就会出错的。例如你的行标题名为“F1”
    'iiii)如果你的Excel电子表格中某一列同时包含了文本和数字的话,那么Excel的ODBC驱动将不能够正常处理这一行的数据类型,你必须要保证该列的数据类型一致
    '===========================================================

    Dim ConnXls,Driver,DBPath,Rs
    Dim tmpName,table,tmpItem

    table="数据表" '表名
    'tmpItem=array("a1","a2","a3")
    tmpItem="a1,a2,a3"
    'tmpItem=split(tmpItem,",")
    tmpName=array("a1","a2","a3") 'excel表头

    ' 建立Connection对象
    Set ConnXls = Server.CreateObject("ADODB.Connection")
    Driver = "Driver={Microsoft Excel Driver (*.xls)};"
    'DBPath = "DBQ=" & Server.MapPath(PatnNow)
    DBPath = "DBQ=" & PatnNow
    '调用Open 方法打开数据库
    ConnXls.Open Driver & DBPath

    'DSN连接方式
    'ConnXls.Open "Dsn=test"
    Sql="Select * From ["&sheet&"$] " '注意 表名一定要以下边这种格试 "[表名$]" 书写
    Set Rs=ConnXls.Execute(Sql)
    response.write "<br>"
        IF Rs.Eof And Rs.Bof Then
             MessageBox("系统提示:没有找到所需数据,请确定后重新操作!!")
              GoBack() ' 返回前一页的小函数 ,不贴出来了
        Else
             Do While Not Rs.EOF
              value1=""
              for i=0 to ubound(tmpName)
                  value1=value1&","&"'"&rs(tmpName(i))&"'"
              next
              value1=right(value1,len(value1)-1)&","&pro_type&",'cn'"
              if left(value1,1)<>"'" then value1="'"&value1

              '将数据写入数据库
              Set rstmp= Server.CreateObject("Adodb.RecordSet")
              rstmp.Open "SELECT count(*) FROM "&table &" Where [关键字段] ='"& 关键字 &"'",dbConn,1,1
              if rstmp.fields(0)=0 then
                  sql = "insert into "&table &" (" & tmpItem & ") VALUES (" & value1& ")"
                  sql = replace(replace(sql,",'',",",null,"),",'',",",null,")
                  dbConn.Execute sql
              else
                 sql="UPDATE "&table&" SET "
                 tmpItem_arr=split(tmpItem,",")
                  value1_Arr=split(value1,",")
                  for i=0 to ubound(tmpItem_arr)
                       if value1_Arr(i)="" then
                            sql = sql & tmpItem_arr(i) & "=null"
                       else
                            sql = sql & tmpItem_arr(i) & "=" & value1_Arr(i)
                       end if
                       if i <> ubound(tmpItem_arr) then sql=sql & "," else sql=sql & " where [关键字段]='" & 关键字 & "'"
                next
              dbConn.Execute sql
             end if
    Rs.MoveNext
    Loop
    End IF


    Rs.Close
    Set Rs=nothing

    ConnXls.Close
    Set ConnXls=Nothing

    MessageBox("系统提示:批量录入成功!!")
    GoBack()   '返回前一页的小函数 ,不贴出来了
     
    end function

     

    展开全文
  • 在ASP中把EXCEL导入ACCESS 的方法

    千次阅读 2008-12-09 22:45:00
    'ii)ADO假设Excel中的第一行为字段名.所以你定义的范围中必须要包括第一行的内容 'iii)Excel中的行标题(即字段名)不能够包含数字. Excel的驱动在遇到这种问题时就会出错的。例如你的行标题名为“F1” 'iiii)如果...
  • 用VBA把EXCEL导入ACCESS数据库中

    万次阅读 2013-01-07 23:29:53
    首先在指定的access数据库的建立一张表,表格的字段和需要导入EXCEL表的字段保持一致。  方法一:在eccel VBA编辑器编写代码,使用FOR循环导入: Sub 利用Excel的VBA将数据写入Access()  '定义ADODB 连接Access...
  • 使用ADOexcel的数据导入access后,身份证号自动变成科学计数法,如何解决? (注:Excel的字段不固定,所显示身份证号的字段名称也不固定)相关代码如下; procedure TFormConfig.Button1Click(Sender: T...
  • Excel数据导入ACCESS数据库

    千次阅读 2005-11-15 09:34:00
    手动方式:请查看 Access 帮助: 帮助 - > 导入或链接数据和对象如果手动来自电子表格导入或链接电子表格中的数据在继续处理之前,要确保电子表格中的数据必须以适当的表格形式排列,并且电子表格每一字段(列...
  • Access是微软Office组件的数据库软件,使用它可以进行简单的数据库软件的开发。但Access的图表功能和数据分析功能不如Excel强大,...如何使用VBA导入Access的数据?如图所示,该表为Access中某个公司的加工数据表。 ...
  • //创建Excel 2000服务器(启动Excel) if (!app.CreateDispatch("Excel.Application",NULL)) { AfxMessageBox("创建Excel服务失败!"); exit(1); } app.SetVisible(true);//使Excel可见 app....
  • 熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,我们也可以使用Transact-SQL语句进行导入导出操作。...利用下述方法,可以十分容易地实现SQL SERVER、ACCESSEXCEL数据转换,详细说...
  • ADO数据库操作之ACCESSEXCEL和获取结果集表 数据库连接和操作 int CTYPE_TRANSFORMDlg::connect_db() { HRESULT hr; hr = m_rea.CreateInstance(_uuidof(Recordset));// if(FAILED(hr)) { AfxMessageBox(L"m_rea ...
  • VB+Access系统中实现ExcelAccess导入 :以“学籍管理数据库”为例,介绍VB+Access系统中利用ADO记录集实现ExcelAccess数据库相互导入的程序设计方法。
  • sql server与excelaccess之间的数据导入和导出2008年10月14日 11:03sql server、excelaccess三者都可以存放数据,有的时候我们需要从一个类型数据库里的数据导入到另外一个类型的数据库里,以下是笔者整理的三种...
  • SQL、EXCELACCESS之间的导入导出!

    千次阅读 2012-10-27 21:50:29
    如何用SQL语句查询Excel数据? Q:如何用SQL语句查询Excel数据? A:下列语句可在SQL SERVER中查询Excel工作表中的数据。 2007和2010版本: SELECT * FROM OpenDataSource( 'Microsoft.ACE.OLEDB.12.0',...
  • 在VB.NET中用ADO对象从Excel表格导入数据,先分别将将注册表“HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Excel”、“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access ...
  • 一、SQL SERVER 和ACCESS的数据导入导出常规的数据导入导出:使用DTS向导迁移你的Access数据到SQL Server,你可以使用这些步骤: ○1在SQL SERVER企业管理器中的Tools(工具)菜单上,选择Data Transformation ○2...
  • ACCESS.EXCEL导入SQL server (转)

    千次阅读 2013-12-25 11:27:30
    利用下述方法,可以十分容易地实现SQL SERVER、ACCESSEXCEL数据转换,详细说明如下: 一、SQL SERVER 和ACCESS的数据导入导出 常规的数据导入导出: 使用DTS向导迁移你的Access数据到SQL Se
  •  SQL Server 导入和导出向导提供了生成 Microsoft SQL Server 2005 Integration Services (SSIS) 包最简单的方法。SQL Server 导入和导出向导可以访问各种数据源。可以向下列源复制数据或从其中复制数...
  • 熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,我们也可以使用Transact-SQL语句进行导入导出操作。...利用下述方法,可以十分容易地实现SQL SERVER、ACCESSEXCEL数据转
  • C# 连接sql数据库对 accessexcel导入导出操作一、SQL SERVER 和ACCESS的数据导入导出常规的数据导入导出:使用DTS向导迁移你的Access数据到SQL Server,你可以使用这些步骤: ○1在SQL SERVER企业管理器中的Tools...
  • PHP 将access 导入 Excel

    2011-03-22 11:03:00
    最近看了excel 发现好多时候excel 这个表格处理软件,还是挺不错的!于是就想用php 来操作一下Excel! 说来也没什么的,就是借用了一个开源的phpexcel 的类! 但是,也是经过本人测试,所以记录了下!...
  • 导入一个excel文件到指定表格 DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _   " Employees " , CurrentProject.Path  &   " est.xls " ,  True End Sub Private   Sub  Command3_...
  •  这个工程要使用一些对象库,在数据库访问方面,决定使用ADO(ActiveX Data Objects),对于使用过ASP的人,这个名字应该非常熟悉了,实际上,它在VB中的应用也是几乎一样的,由于要操作 Excel ,还要引用一个...
  • <br />熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,...利用下述方法,可以十分容易地实现SQL SERVER、ACCESSEXCEL数据转换。 <br /> 熟悉SQL SERVER 2000的数据库管理员
  • 熟悉SQL SERVER 2000[de]数据库管理员都知道,其DTS可以进行数据[de]导入导出,其实,我们也可以使用Transact-SQL语句进行导入导出操作。...利用下述方法,可以十分容易地实现SQL SERVER、ACCESSEXCEL

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,252
精华内容 900
关键字:

adoexcel导入access