关于把Excel表当做数据库来处理的问题
各位好,小弟要用Excel表处理大量的数据,但是数据量太大,用普通的方法处理起来效率很低,所以想把Excel表当作数据库来处理,都需要安装什么软件?目前机器环境
操作系统:Windows 7 Office2007
Excel表:是xls后缀的。
除了这些还需要安装什么? 数据量大的话,我觉的还是放弃用EXCEL吧,
首先EXCEL有行数的限制,好象2003是6万多行吧,并且EXCEL单元格的最大长度就是255个字符,而且EXCEL的读写效率肯定会低于数据库。再差的数据库也会比EXCEL快;
我是用JAVA的,如果要用EXCEL作为数据文件的话,象JXL这样的开源包就不错,用VBS的好象不用安装什么特别的软件,因为widnows系统就已经提供了EXCEL的测试对象模型,可以通过VBS直接访问的。 灌水 可以通过odbc去访问,不知道这样的情况下,是否会快点
没这么做过,提供不了有价值的信息 数据量大的建议你不要使用Excel。超过7W+的数据 打开Excel已经是一个很慢的过程。建议你使用轻量级的数据库,。 QTP通过ADO直接访问Excel,速度还可以 谢谢大家,问题已经解决。 谢谢大家,问题已经解决。
木落 发表于 2010-11-29 17:47 http://bbs.51testing.com/images/common/back.gif
大哥(姐),您就不说说是如何解决的?
顺便 把代码贴出来 就是啊。顶! 回复 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]