#include <EditConstants.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Excel.Au3>
#include <Array.au3>
;Opt("TrayIconHide", 0) ;隐藏默认托盘
Opt("TrayMenuMode",1)
;************GUI相关变量声明*****************
Dim $Main_Win,$TD_Root,$TD_Btn,$Report_Root,$Rep_Btn,$Copy_BTn,$Send_Mail ;GUI声明
Dim $TD_Exl_Root,$Rep_Exl_Root;input中excel文件路径
Dim $TD_Exl_ID,$Rep_Exl_ID;Excel对象标识(TD和测试报告的)
Dim $Bug_Id,$Bug_Stat,$Bug_Decb,$Bug_Prob,$Bug_Grde;“缺陷ID”、“状态”、“描述”、“出现概率”、“严重程度”所在的列号
Dim $Sheet_Name,$Excel_Sheet;分页相关
Dim $return_id
Dim $BegRow ;第一个缺陷ID为空的列号
Dim $About_If = "提示:"&"1.请预先关闭需要导入的Excel文件!"&@CRLF&" 2.请勿在导入过程结束前结束程序!"&@CRLF&" 2.请勿在导入过程中操作Excel!"
;*********************************************
;********************GUI设计******************
;
;
#Region ### START Koda GUI section ### Form=
$Main_Win = GUICreate("TestReport", 400, 140, 421, 368,-1,$WS_EX_ACCEPTFILES);主窗口且接收拖动
$TD_Root = GUICtrlCreateInput("", 8, 16, 289, 21,BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY));创建
GUICtrlSetState($TD_Root, $GUI_DROPACCEPTED)
$TD_Btn = GUICtrlCreateButton("TD导出XLS", 304, 14, 89, 25)
$Report_Root = GUICtrlCreateInput("", 8, 51, 289, 21,BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
$Rep_Btn = GUICtrlCreateButton("测试报告XLS", 304, 49, 89, 25)
$Copy_BTn = GUICtrlCreateButton("生成缺陷报告", 8, 83, 89, 25)
$Send_Mail = GUICtrlCreateButton("发送到FoxMail", 208, 83, 89, 25)
$About = GUICtrlCreateButton("关于", 304, 110, 89, 25)
GUISetState(@SW_SHOW,$Main_Win)
#EndRegion ### END Koda GUI section ###
;
;
;***********************************************
;Global $TD_Exl_Root,$TD_Exl_ID,$TD_Exl_ID_Attach,$Bug_Id,$Rep_Exl_Root,$Report_Root,$_File_Root,$Sheet_Name,$Excel_Sheet
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $TD_Btn
Open_Dialog("选择TD中导出BUG文件(Excel格式)",$TD_Root);选择TD导出BugList的对话框
Case $Rep_Btn
Open_Dialog("选择测试报告Excel",$Report_Root);选择测试报告的对话框
Case $Copy_BTn ;开始进行运行生成
$TD_Exl_Root = GUICtrlRead($TD_Root);读取TD.xls的路径
$Rep_Exl_Root = GUICtrlRead($Report_Root);读取测试报告路径
If $TD_Exl_Root = "" Or $Rep_Exl_Root = "" Then;判断上面是否读取成功
error_msg("请选择文件");若读取失败弹出对话框提示
Else
TrayTip("提示","正在操作BUG列表Excel...",15,1)
$TD_Exl_ID = _ExcelBookOpen($TD_Exl_Root,0);打开TD.xls
If $TD_Exl_ID <> 0 Then
$Bug_Id = Get_link_col($TD_Exl_ID,"缺陷 ID");获取“缺陷ID”所在的列号,且以“缺陷ID”为主要判断条件
If $Bug_Id <> 0 Then
error_msg("成功~’")
Else
error_msg("缺少必要项"&@CRLF&"‘缺陷ID’")
$re = _ExcelBookClose($TD_Exl_ID)
MsgBox(4096,"1",$re&@CRLF&@error)
EndIf
Else
error_msg("打开文件失败,请检查")
EndIf
EndIf
;Open_Excel($Report_Root)
Case $GUI_EVENT_CLOSE
ExitLoop
Exit
Case $Send_Mail
Run(@ScriptDir&"\FoxMail.exe")
Case $About
MsgBox(32,"关于",$About_If)
Case $GUI_EVENT_DROPPED
If @GUI_DropId = $TD_Root Then
GUICtrlSetData($TD_Root, "")
GUICtrlSetData($TD_Root,@GUI_DragFile)
ElseIf @GUI_DropId = $Report_Root Then
GUICtrlSetData($Report_Root, "")
GUICtrlSetData($Report_Root,@GUI_DragFile)
Else
EndIf
EndSwitch
WEnd
;*****************打开选择文件对话框函数***********
;
;
Func Open_Dialog($Diglog_til,$Input)
Local $temp,$Open_Root
$Open_Root = FileOpenDialog($Diglog_til,@DesktopDir,"Excel 工作簿(*.xls;*.xlsx)",1,"")
If @error = 2 Then
error_msg("出错了")
EndIf
$temp = GUICtrlSetData($Input,$Open_Root)
If $temp = 0 Or $temp = -1 Then
error_msg("写入路径失败")
EndIf
EndFunc
;
;**********提示框函数*******
Func error_msg($msg)
MsgBox(0,"提示",$msg)
EndFunc
;**************************
;***********获取关键字(如 缺陷ID)所在的列,此处默认他们所在行为第一行
Func Get_link_col($ExcelHD,$keyword)
Local $Value = 0 ;设置默认返回值
Local $Array[15]
$Array = _ExcelReadArray($ExcelHD,1,1,15) ;使用_excelreadarray函数。读取从第一行第一列到第15列的数据到数组$Array1中。
;MsgBox(0,"0",@error)
For $i = 0 To 14
;_ArrayDisplay($Array1,"no")
If $Array[$i] == $keyword Then ;比对数组$Array1中是否有值与“关键字”一致的。
$Value = $i + 1 ;将$i+1赋值给返回值$Array。这里的$value对应的就是列号了
ExitLoop
;$Array_Value[0] = $j
;$Array_Value[1] = $i
;ExitLoop
Else
$value = 0
EndIf
Next
Return $Value ;返回$value值
EndFunc
;**********************************
;*******************获取关键字(“如空格”)所在的行号
Func Get_link_row($ExcelHD,$keyword,$col,$row) ;参数1,4
Local $Value = 0
$Array2 = _ExcelReadArray($ExcelHD,$row,$col,300,1) ;$col参数由get_link_col函数返回,从$col列的第一行开始读500行的数据到$array2中
For $i = 0 To 499
If $Array2[$i] == $keyword Then ;对比数组$array2中数据与关键字,是否有一致的项目。若有,将$i+1赋值给$value.即查找到的行号
$Value = $i + 1
ExitLoop
Else
$Value = 0
EndIf
Next
Return $Value ;返回$Value,若为0 则说明无相同项
EndFunc
;****************************
附件测试Excel..