CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  数据库(包含打印,安装,报表)

将EXCEL文件导入数据库

楼主1410104(兔子)2006-03-06 09:22:16 在 VB / 数据库(包含打印,安装,报表) 提问

打开一个EXCEL文件AA。XLS,修改、保存但没有关闭  
  如何将当前这个文件导入数据库  
  问题点数:50、回复次数:14Top

1 楼faysky2(出来混,迟早是要还嘀)回复于 2006-03-06 09:30:49 得分 40

你导入的是Access还是SQL?Top

2 楼1410104(兔子)回复于 2006-03-06 09:34:27 得分 0

SQLTop

3 楼tongiii(索罗·希尔)回复于 2006-03-06 09:35:14 得分 5

'用ADODB打开Excel文件,用OpenSchema方法获得Excel文件中的工作表  
                  '还要加参数使首行不作为字段名,使所有数据都作为文本类型  
          Dim   strConn   As   String  
          'strConn   =   "Provider   =   MSDASQL;Driver={Microsoft   Excel   Driver   (*.xls)};DBQ="   &   xlsFile  
          'strConn   =   strConn   &   ";IMEX=1"  
           
          strConn   =   "Provider=Microsoft.Jet.OLEDB.4.0;Data   Source="   &   xlsFile   &   ";"   &   "Extended   Properties=""Excel   8.0;HDR=No;IMEX=1;"""  
          connExcel.ConnectionString   =   strConn  
          connExcel.Open  
          Set   rsTables   =   connExcel.OpenSchema(adSchemaTables)  
          If   rsTables.EOF   Then  
                  MsgBox   "无法打开Excel文件!文件格式可能不正确!"  
                  Exit   Function  
          End   If  
          table_name   =   rsTables("TABLE_NAME").Value  
          rsTables.Close  
          '第一行作为字段名,读不到第一行  
          table_name   =   "["   &   table_name   &   "]"  
          rsExcel.Open   "select   *   from   "   &   table_name,   connExcel  
   
          '......  
  Top

4 楼tongiii(索罗·希尔)回复于 2006-03-06 09:37:14 得分 0

使用ADO可以在不安装Excel的情况下读取Excel文件Top

5 楼1410104(兔子)回复于 2006-03-06 09:41:07 得分 0

如果这个文件当前是打开的,能导入吗?Top

6 楼faysky2(出来混,迟早是要还嘀)回复于 2006-03-06 10:11:05 得分 0

下面这个,可以实现你的要求:  
   
  '用ado实现  
  '工程--->引用--->Microsoft   ActiveX   Data   Object   2.x(版本号)  
  Private   Sub   Command1_Click()  
          Dim   cn   As   New   ADODB.Connection  
          cn.CursorLocation   =   adUseClient  
          cn.Open   "Provider=Microsoft.Jet.OLEDB.4.0;Persist   Security   Info=False;Data   Source="   &   App.Path   &   "\test.xls;Extended   Properties='Excel   8.0;HDR=Yes'"  
   
          cn.Execute   ("insert   INTO   [odbc;Driver={SQL   Server};"   &   _  
                  "Server=ljx;Database=testDB;"   &   _  
                  "UID=sa;PWD=].testTable"   &   _  
                  "select   *   FROM   [Sheet1$]")  
          cn.Close  
          Set   cn   =   Nothing  
  End   SubTop

7 楼vansoft(Vansoft Workroom)回复于 2006-03-06 10:32:01 得分 5

是文件,還是文件內的數據啊?  
   
  文件的話,不關閉是放不進數據庫的。  
  文件內的數據的話,可以用VBA,寫個導入SQL語句直接就導進去了。Top

8 楼1410104(兔子)回复于 2006-03-06 10:57:19 得分 0

是文件,因为里面还有格式的和数据链接之类的东西,这个是一个群里的朋友昨天问我的,我也认为是如果文件不关闭,应该是不将文件导入数据库的  
  如果采用保存加另存为的方式不知道行不行Top

9 楼faysky2(出来混,迟早是要还嘀)回复于 2006-03-06 11:09:21 得分 0

另存的方式肯定可以的,因为保存的是那个另存的文件  
   
  不关闭文件应该也可以(以二进制方式读取)Top

10 楼1410104(兔子)回复于 2006-03-06 11:21:55 得分 0

不关闭的话,我试过,我用的是adodb.stream   然后type=   adTypeBinary       '二进制模式  
  但保存的时候就会出错,提示导入文件错误  
  关闭后再导入就没有问题  
  用你的方法在不关闭文件的情况下可行吗  
  我试了下cn.Open         "Provider=Microsoft.Jet.OLEDB.4.0;Persist     Security     Info=False;Data     Source=     "     &     App.Path     &         "\test.xls;Extended     Properties='Excel     8.0;HDR=Yes'     "这句出错了提示,找不到可安装的ISAMTop

11 楼faysky2(出来混,迟早是要还嘀)回复于 2006-03-06 13:25:11 得分 0

上面的代码,是保存文件里的数据,并不是保存文件,下面给出保存文件的方法(可以不关闭文件):  
   
  Private   Sub   Form_Load()  
          Dim   cn   As   New   ADODB.Connection  
          cn.CursorLocation   =   adUseClient  
          '具体的数据库连接请自己改过来  
          cn.Open   "Provider=SQLOLEDB.1;Password=;Persist   Security   Info=False;User   ID=sa;Initial   Catalog=Test;Data   Source=ljx"  
  End   Sub  
   
  Private   Sub   cmdSaveFile_Click()  
          saveFile  
  End   Sub  
   
  Private   Sub   cmdReadFile_Click()  
          readFile  
  End   Sub  
   
  '保存xls文件到数据库  
  Private   Sub   saveFile()  
          Dim   tmp()   As   Byte  
          Dim   lngFile   As   Long  
          Dim   rs   As   New   ADODB.Recordset  
          rs.Open   "select   *   from   test   where   1<>1",   cn,   adOpenDynamic,   adLockOptimistic  
           
          lngFile   =   FreeFile  
          Open   App.Path   &   "\test.xls"   For   Binary   As   #lngFile  
          ReDim   tmp(LOF(lngFile))  
          Get   #lngFile,   ,   tmp  
          Close   #lngFile  
          rs.AddNew  
          rs.Fields(0).Value   =   tmp  
          rs.Update  
          rs.Close  
          Set   rs   =   Nothing  
  End   Sub  
   
  '读取数据库的xls文件,保存到硬盘  
  Private   Sub   readFile()  
          Dim   tmp()   As   Byte  
          Dim   rs   As   New   ADODB.Recordset  
          rs.Open   "select   *   from   test   ",   cn  
          ReDim   tmp(rs.Fields(0).ActualSize)                                           '返回2进制文件的字节长度  
          tmp   =   rs.Fields(0).Value  
          Open   App.Path   &   "\NewExcel.xls"   For   Binary   As   #1  
          Put   #1,   ,   tmp  
          Close   #1  
          rs.Close  
          Set   rs   =   Nothing  
  End   SubTop

12 楼1410104(兔子)回复于 2006-03-06 14:15:24 得分 0

非常感谢faysky,还有个问题要请教下,我打开EXCEL文件后,如何让这个文件高亮Top

13 楼1410104(兔子)回复于 2006-03-06 15:53:11 得分 0

帮忙看下呢,兄弟Top

14 楼faysky2(出来混,迟早是要还嘀)回复于 2006-03-06 16:20:35 得分 0

你说的文件高亮是什么样子?只是让它获得焦点吗?Top

相关问题

  • 如何将EXCEL文件导入到ORACLE数据库里去?
  • 将数据库中的数据导入EXCEL文件的問題?
  • 如何把Excel文件导入到SQLServer数据库中?
  • 哪位有Excel文件导入数据库的例子?
  • 如何将一个excel文件导入数据库中?急问!!!
  • 导入EXCEL进数据库!
  • Excel导入sql数据库
  • 把excel内容导入到数据库,excel文件放在客户端行吗?
  • 求解:如何将excel文件的数据导入到dbf数据库中
  • 如何使用asp.net将excel文件导入到mysql数据库中?

关键词

  • 文件
  • 数据库
  • excel
  • hdr
  • 导入
  • lngfile
  • connexcel
  • rstables
  • 保存
  • 數據

得分解答快速导航

  • 帖主:1410104
  • faysky2
  • tongiii
  • vansoft

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo