51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3119|回复: 9
打印 上一主题 下一主题

[原创] 关于把Excel表当做数据库来处理的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-11-22 16:16:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位好,小弟要用Excel表处理大量的数据,但是数据量太大,用普通的方法处理起来效率很低,所以想把Excel表当作数据库来处理,都需要安装什么软件?
目前机器环境
操作系统:Windows 7   Office2007
Excel表:是xls后缀的。
除了这些还需要安装什么?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-11-23 15:27:39 | 只看该作者
数据量大的话,我觉的还是放弃用EXCEL吧,
首先EXCEL有行数的限制,好象2003是6万多行吧,并且EXCEL单元格的最大长度就是255个字符,而且EXCEL的读写效率肯定会低于数据库。再差的数据库也会比EXCEL快;
我是用JAVA的,如果要用EXCEL作为数据文件的话,象JXL这样的开源包就不错,用VBS的好象不用安装什么特别的软件,因为widnows系统就已经提供了EXCEL的测试对象模型,可以通过VBS直接访问的。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2010-11-23 16:35:20 | 只看该作者
灌水
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2010-11-23 17:17:07 | 只看该作者
可以通过odbc去访问,不知道这样的情况下,是否会快点
没这么做过,提供不了有价值的信息
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2010-11-23 17:28:47 | 只看该作者
数据量大的建议你不要使用Excel。超过7W+的数据 打开Excel已经是一个很慢的过程。建议你使用轻量级的数据库,。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2010-11-25 16:09:45 | 只看该作者
QTP通过ADO直接访问Excel,速度还可以
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2010-11-29 17:47:40 | 只看该作者
谢谢大家,问题已经解决。
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2010-11-29 18:27:34 | 只看该作者
谢谢大家,问题已经解决。
木落 发表于 2010-11-29 17:47



    大哥(姐),您就不说说是如何解决的?
顺便 把代码贴出来
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2014-12-8 10:55
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    9#
    发表于 2010-11-29 19:29:37 | 只看该作者
    就是啊。顶!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
     楼主| 发表于 2010-12-2 18:19:53 | 只看该作者
    回复 8# sunnyswu

    要处理的Excel版本是2003的,这个跟电脑上现有的office版本没有关系
      asd=getFieldV("[通话时长(s)],","C:\ZCTT\20101122171413.xls")
    MsgBox asd
    Function getFieldV(fieldsName,xlsPath)
    Set xlsDoc = CreateObject("Excel.Application")
    xlsDoc.Workbooks.Open(xlsPath)
    xlsDoc.Worksheets(1).Activate
    Set oSheet = xlsDoc.ActiveSheet
    oSheetNam = oSheet.name
    xlsDoc.Quit
    Set xlsDoc = Nothing
    filterV = ""
    While InStr(fieldsName,",")<>0
        flagnum =0
        locNum = InStr(fieldsName,",")
        fieldName = Left(fieldsName,locNum-1)
        fieldsName =Mid(fieldsName,locNum+1,Len(fieldsName))
        MsgBox fieldName
        ai = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&xlsPath&";Extended Properties=Excel 4.0"
    bi = "Select "&fieldName &" from ["&oSheetNam&"$] group by "&fieldName
    Set conn = CreateObject("ADODB.Connection")
    conn.Open ai
    Set rs = CreateObject("ADODB.Recordset")
    rs.Open bi,conn
    While Not rs.EOF 'And flagnum < getall_num
          rd = rs("通话时长(s)")
          MsgBox rd
          If StrComp(rd,"")<>0 Then
           filterV = filterV &rd&","
           flagnum = flagnum + 1
          End If
          rs.MoveNext
    wend
    conn.Close
    Set rs =Nothing
    Wend
    If strcomp(filterV,"")=0 Then
    getFieldV =""
    else
    getFieldV = Left(filterV,Len(filterV)-1)
    End If
    End Function
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-26 03:39 , Processed in 0.080659 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表