我正在编写一个脚本,我想从包含用户名和密码的Excel电子表格中提取单元格值。我希望使用两个变量USERNAME和PASSWORD。我想在每一行使用数据,并在每次循环时向下移动一行。
我查看了由第三方编写的AutoIT和ExcelCOM_UDF中包含的Excel UDF。我似乎找不到我要找的答案。这应该是其中任何一个的基本功能,但我遇到了麻烦。
我不是在寻找讲义,所以只是一个很好的参考页面。但如果你有我需要的片段,它不会伤害我的感情,因为我不打算单独依靠自己编写这段代码。
我的“A”列将包含USERNAME变量,“B”列将包含我的PASSWORD变量。
添加了我目前所拥有的一些代码片段。我还没有试过从Excel中提取任何东西,因为我找不到一个似乎做我想做的命令。希望看到代码可以更好地了解我的目标。
我不希望编程方式修改电子表格,只能从细胞文本中设置字符串变量。
...
$USERNAME = "usernameHere" ;I want to set this variable as the text from A1 of c:\test.xls
$PASSWORD = "passwordHere" ;I want to set this variable as the text from B1 of c:\test.xls
;Username Box
MouseClick("left",1179,488,1)
;Type username
Send($USERNAME)
;Password Box
MouseClick("left",1179,578,1)
;Type Password
Send($PASSWORD)
...
答案 0 :(得分:0)
要阅读包含用户名和密码列表的电子表格。此函数创建一个具有两个维度的数组。第一列包含用户名,第二列包含密码。有了这个
#include <Array.au3>
#include <Excel.au3>
Func get_data_Excel($filePathExcel)
Local $error
Local $oExcel = _ExcelBookOpen($filePathExcel, 0)
$oExcel.Application.DisplayAlerts = False
$oExcel.Application.ScreenUpdating = False
$error = Int(@error)
Select
Case $error = 1
msgbox(16, "Erreur : Fermeture de l'application", "Code erreur _ExcelBookOpen : 1"&@CRLF&@CRLF&"Impossible de creer l'objet $oExcel avec _ExcelBookOpen")
Case $error = 2
msgbox(16, "Erreur : Fermeture de l'application", "Code erreur _ExcelBookOpen : 2"&@CRLF&@CRLF&"Impossible d'ouvrir le fichier "&$filePathExcel&" avec _ExcelBookOpen")
EndSelect
If $error > 0 Then
_ExcelBookClose($oExcel, 0) ; Close without save
Exit
EndIf
; Read column A (login) and column B (pwd)
_ExcelSheetActivate($oExcel, "sheet1")
$nb_columns = $oExcel.ActiveSheet.UsedRange.Columns.Count
$nb_rows = $oExcel.ActiveSheet.UsedRange.Rows.Count
Local $array_data_excel[$nb_rows][2]
Local $idx
For $idx = 0 To $nb_rows-1
$array_data_excel[$idx][0] = $oExcel.Activesheet.Cells($idx+1, 1).Value
$array_data_excel[$idx][1] = $oExcel.Activesheet.Cells($idx+1, 2).Value
Next
_ExcelBookClose($oExcel, 0)
_ArrayDisplay($array_data_excel, "Data from excel file")
EndFunc
并使用此功能:
get_data_Excel("d:\users.xlsx")
答案 1 :(得分:-1)
#include <Excel.au3>
Local $MyUsernameArray[5] = [ "Hans", "Gerd", "Walter", "Klaus", "Peter" ] ;Your Username Array
Local $MyPasswordArray[5] = [ "12345", "I", "am", "so", "creative" ] ;Your Password Array
$oExcel = _ExcelBookNew(1) ;Set this to 0 if you want it to work in background
_ExcelWriteCell ( $oExcel, "Usernames", "A1" ) ;self explaining (i hope)
_ExcelWriteArray ( $oExcel, 2, 1, $MyUsernameArray ,1) ;^
_ExcelWriteCell ( $oExcel, "Passwords", "B1" );^
_ExcelWriteArray ( $oExcel, 2, 2, $MyPasswordArray ,1);^
_ExcelBookSaveAs($oExcel, @ScriptDir & "\PleaseAtleastPostSomeCodeNextTimeSoWeSeeYouTried", "xls") ;save the file
_ExcelBookClose($oExcel, 1, 0) ;exit and save
答案 2 :(得分:-1)
如果您希望通过COM / Automation Excel获得所有控制权,请不要使用UDF,并使用AutoIt ObjCreate 功能深入Com / Automation。使用此功能,您可以在AutoIt
中控制对象Excel1)在目标应用程序的COM对象上创建引用(这里是Excel)
$oExcel = ObjCreate("Excel.Application")
2)在此实例上添加一些选项
With $oExcel
.Visible = 1
.WorkBooks.Add
EndWith
3)现在可以开始工作了(添加一些工作表或数据,保存工作簿......)
With $oExcel
.ActiveWorkbook.Worksheets(1).Name = "SHEET_ONE"
.ActiveWorkbook.Worksheets(1).Cells(1,1) = "I believe i can fly !!!"
EndWith
; Create new file with one sheet named "SHEET_ONE"
Local $oExcel = ObjCreate("Excel.Application")
With $oExcel
.SheetsInNewWorkbook = 1
.Visible = 1
.WorkBooks.Add
.ActiveWorkbook.Worksheets(1).Name = "SHEET_ONE"
.ActiveWorkbook.Worksheets(1).Cells(1,1) = "I believe i can fly !!!"
EndWith
Local $filename = @WorkingDir&"\saveas_excel.xls"
$oExcel.Application.DisplayAlerts = 0
$oExcel.Application.ScreenUpdating = 0
$oExcel.ActiveWorkBook.SaveAs($filename, 1, Default, Default, Default, Default, 2, 1)
$oExcel.Quit