51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 3481|回复: 3
打印 上一主题 下一主题

[原创] EXCEL文件无法导入和Import问题的解决办法

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-7-2 08:49:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近用QTP导入EXCEL文件的时候常遇到excel文件无法导入的问题.

找了很久论坛也问过了,都没有根本解决,一天突发奇想既然excel文件导入不了,那么QTP导出来的excel文件总应该可以使用吧

于是写脚本,直接从excel文件中取出数据,写入DataTable然后从DataTable中导出成excel文件.就可以使用Import导入了.
代码如下其实代码不复杂,关键是要有解决思路)

'***********************************************************
'功能说明:把无法正确导入到QTP中的excel文件,转换为可以导入到QTP中的excel文件
'脚本说明:excel文件中,第一行,是用来判断是否需要转换的,所以如果第一行没有内容,将自动停止转换.
'excel中任何一列中间掺杂空白表格,将从此空白表格处停止转换下方的内容.
'输出文件和源文件一个目录
'脚本必须设置只运行一次.
'***********************************************************
Dim row,row2
row=2        '设置开始转换的行
row2=1       '设置开始转换的列
tablename=""

workbookurl=Select_File("D:\")
If workbookurl="" Then
msgbox("没有选择文件.程序将退出")
else
Set ExcelObj = CreateObject("Excel.Application")     ' 创建excle工作表对象
ExcelObj.Visible = False    '不显示打开的excel窗体      
Set xlsWorkBook = ExcelObj.Workbooks.Open(workbookurl)  '打开excle文件
Set NewSheet = xlsWorkBook.Sheets(1) '选择添加数据的工作

Do  '列循环开始
   If NewSheet.Cells(1,row2) = "" then'如果纵单元格第一行没有内容,就说明不需要转换了.
    Exit do
   else
     tablename=NewSheet.Cells(1,row2)
     tablename=DataTable.GetSheet("Global").AddParameter(tablename,"").Name '新建导入数据的字段名称.并赋值内容""
   end if
   row=2      '初始化行
   Do         '行循环开始
     tmp=NewSheet.Cells(row,row2)
     If tmp = "" then'如果列中某单元格为空,则进入下一列开始转换
      Exit do
     end if
     datatable.GlobalSheet.GetParameter(tablename).ValueByRow(row-1)=tmp'写入数据到datatable中
     row=row+1
   loop
   row2=row2+1
loop
xlsWorkBook.close  '关闭工作表
Set xlsWorkBook = Nothing
datatable.Export(workbookurl&"-转换后的.xls")
msgbox("转换完成")
End If

'选择文件函数
Function Select_File(From_FilePath)
If From_FilePath ="" Then
  From_FilePath="C:\"
End If

Set bjDialog = CreateObject("UserAccounts.CommonDialog")
objDialog.Filter = "Excel文件|*.xls"
objDialog.InitialDir = From_FilePath
intResult = objDialog.ShowOpen
Select_File=objDialog.FileName
End Function
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2009-7-2 09:19:57 | 只看该作者
why can't import data ?  Whether there are performance issues?  ths
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2009-7-2 14:18:43 | 只看该作者

回复 2# 的帖子

是由于excel中可能包含了,QTP不允许存在的格式.
一般少量数据的EXCEL文件是不会这样的.
当excel文件中数据量很大的时候,就很有可能无法用import 导入..
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-7-2 15:00:58 | 只看该作者
请教LZ你有没有找到过非法格式的规律???我一直都很头疼这个问题,困扰我很久.我用到了大量的Excel,但经常莫名其妙的导入不成功,尤其存在多个Sheet的时候更难定位到出错的位置,我也曾经试过类似你这种方法,但是效果不理想,很费时
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-5-23 10:03 , Processed in 0.092758 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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