51Testing软件测试论坛
标题:
Excel导入问题
[打印本页]
作者:
here556
时间:
2009-9-10 12:01
标题:
Excel导入问题
我从Excel往DataTable导数据,但是Excel里的字段不是文本形式,而是通过Excel公式从其他字段得到的,导入后在DataTable不显示值,而显示#REF!请问各位,这个如何解决?有没有哪能设置让DataTable导入只是文本,不导入公式?
作者:
新人请多关照
时间:
2009-9-10 12:07
在excel里设置。。设置单元格为文本。。
作者:
here556
时间:
2009-9-10 14:51
我的测试流程是这样的:Excel里有sheet1和sheet2两个sheet,分别作为两个测试案例的输入数据,当sheet1的数据导入DataTable后,得到的结果会存入sheet1,而这个输出结果又是第二个测试案例的输入项,所以我在sheet2里要用公式取得sheet1里的结果,这样才能连续执行测试案例,其实我把所有数据都写在一个sheet里即可,但是我希望通过不同sheet区分测试数据。
作者:
风雪夜归人
时间:
2009-9-10 14:55
File --> settings -->Resoures ,选择other location,然后xxxx,导入excel
作者:
here556
时间:
2009-9-10 16:17
这样导进去确实只是文本格式,但是我sheet2的数据要依赖于sheet1的结果,也就是说在测试执行之前sheet2为空,当执行完sheet1后,sheet2才会有值,所以我如果在测试之前导入excel,那么sheet2是空的,还是不符合我的要求。。。
作者:
here556
时间:
2009-9-10 16:25
我的两个测试用例其实录制了两个脚本,我在执行的时候是用Test Batch Runner把它们串起来的,而这两个用例的输入参数我都写在了一个excel文件的两个sheet里,每执行一个用例是要导入对应的一个sheet
作者:
风雪夜归人
时间:
2009-9-10 16:51
不明白你的意思,就算全部导入,我也可以只取一瓢,datatable可以定位sheet的,其他的还是问题么?
作者:
here556
时间:
2009-9-10 17:57
我的流程是导入sheet1,执行测试用例1,得到测试结果outA导出到sheet1,从sheet1将outA放到sheet2中,导入sheet2,执行测试用例2,得到测试结果outB导出到sheet2,这些都是连续的,所以一开始就导入sheet2此时还没有outA这个值,而sheet2中的outA是通过公式从sheet1中的outA得到的。
作者:
风雪夜归人
时间:
2009-9-10 18:42
为何要这样不停的换?项目需求么?
首先,这是连续的一个流程,为何要用两个测试用例来实现?
其次,就算是两个测试用例,也可以用同一个excel的sheet来实现
再次,就算真的按照你说的那样来执行,好,你两个测试用例都导入一下,你真的可以试一下,好像是用例打开的时侯执行导入的,所以,如果你写的赋值什么的都正确,应该可以的
哎,下班了,我帮你试下嘛
作者:
风雪夜归人
时间:
2009-9-10 18:55
晕,好像不能改变值的,要回家了,要不没公交了,明天给你答案~
作者:
here556
时间:
2009-9-10 19:31
呵呵,是这样的:
首先:他们是独立的场景,但是有依赖关系,我是以每个场景作为一个脚本,里面有正例和反例,场景二的输入可能就是场景一的输出
其次:不同场景可以在一个sheet里实现,但是我的场景有很多,每个场景又有若干输入参数,所以分开sheet这样比较清楚
作者:
风雪夜归人
时间:
2009-9-11 09:34
test1:
===============================================================
SystemUtil.CloseProcessByName "EXCEL.EXE"
DataTable.Import "C:\test.xls"
DataTable.GlobalSheet.GetParameter("A").Value = 20
DataTable.Export "C:\test.xls"
===============================================================
test2
===============================================================
SystemUtil.CloseProcessByName "EXCEL.EXE"
DataTable.Import "C:\test.xls"
Print DataTable.LocalSheet.GetParameter("A").Value
DataTable.Export "C:\test.xls"
===============================================================
在c盘根目录下面创建一个名为test.xls的excel表,sheet1 的a2单元格初始值为10,sheet2的a2单元格初始值为 =(sheet1!A2)+10就是sheet1的A2单元格加10。在test1的脚本里,我先导入test.xls表,然后修改10为20,最后导出到test.xls表,接着执行test2,print出sheet2中a2单元格的值,是30,满足要求了吧?如果不想操作整个excel表格,还可以使用importsheet 和exportsheet 方法来进行导入和导出
作者:
here556
时间:
2009-9-11 11:17
我试了,这样可以了,我以前用importsheet 的方式导入,公式不能识别,现在整体导入excel,就可以实现了,多谢,多谢。
作者:
here556
时间:
2009-9-11 11:27
现在还有个小问题,我原来文件的sheet为sheet1和sheet2,导入后变为Global和Action1,再导出后也变成了Global和Action1,也就是说sheet的名字变了,我希望不变,这个可以解决吗?
作者:
风雪夜归人
时间:
2009-9-11 11:41
应该可以吧,你可以试试导出sheet的方法,就是 exportsheet
作者:
风雪夜归人
时间:
2009-9-11 11:48
晕,好像不行,exportsheet两个参数,第一个是要导出的excel的文件名,第二个是源datatable表的名字,这儿应该是global,sorry,我没有试过就妄下结论了,汗!想别的办法嘛
作者:
风雪夜归人
时间:
2009-9-11 12:03
神啊,真不敢相信,我居然试成功了,代码如下:
============================================================================
SystemUtil.CloseProcessByName "EXCEL.EXE"
DataTable.AddSheet "Sheet1"
DataTable.AddSheet "Sheet2"
DataTable.ImportSheet "C:\test.xls", "Sheet1", "Sheet1"
DataTable.ImportSheet "C:\test.xls", "Sheet2", "Sheet2"
DataTable.GetSheet("Sheet1").GetParameter("A").Value = 30
DataTable.ExportSheet "C:\test.xls", "sheet1"
DataTable.ExportSheet "C:\test.xls", "Sheet2"
===================================================================
作者:
风雪夜归人
时间:
2009-9-11 12:04
修改了一下,不需要sheet2的,所以,这儿仅仅导入一个sheet即可,但是用sheet2的时侯一定要导入sheet1哦
=====================================================================
SystemUtil.CloseProcessByName "EXCEL.EXE"
DataTable.AddSheet "Sheet1"
DataTable.ImportSheet "C:\test.xls", "Sheet1", "Sheet1"
DataTable.GetSheet("Sheet1").GetParameter("A").Value = 30
DataTable.ExportSheet "C:\test.xls", "sheet1"
===================================================================
[
本帖最后由 风雪夜归人 于 2009-9-11 12:09 编辑
]
作者:
here556
时间:
2009-9-23 20:48
Datatable改名后就得不到公式了,我Debug发现DataTable导入excel后在sheet2里显示的是“=[]Sheet1!A1+1”,而不是“=Sheet1!A1+1”,不知道为什么多了“[]”,导致公式不能使用,这个怎么解决?
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2