Netol Posted July 21, 2024 Posted July 21, 2024 (edited) hello my friend, just to ask about a code that conver array to list i have the next code and i need to put the array result to an list Local $oExcel =_Excel_Open() $datawb = _Excel_BookOpen($oExcel,@ScriptDir & "\test.xlsx") ; $datawb.worksheets("info").select $LastRow = $datawb.ActiveSheet.UsedRange.Rows.Count $mydata = _Excel_RangeRead($datawb, Default,Default ) If IsArray($mydata) Then _ArrayDisplay($mydata) _Excel_BookClose($datawb) Best regards Edited July 21, 2024 by Netol
Netol Posted July 21, 2024 Author Posted July 21, 2024 39 minutes ago, Andreik said: What exactly do you mean by list? Thanks for your responce i need to convert the array to listview GUICtrlCreateListView
Andreik Posted July 21, 2024 Posted July 21, 2024 If you want to create a list view item for each index from array then you can do it like this: ; Create a GUI here ;~ $cList = GUICtrlCreateList() Local $oExcel =_Excel_Open() $datawb = _Excel_BookOpen($oExcel,@ScriptDir & "\test.xlsx") ; $datawb.worksheets("info").select $LastRow = $datawb.ActiveSheet.UsedRange.Rows.Count $mydata = _Excel_RangeRead($datawb, Default,Default ) If IsArray($mydata) Then _ArrayDisplay($mydata) For $Index = 0 To UBound($mydata) - 1 GUICtrlCreateListViewItem($mydata[$Index], $cList) Next _Excel_BookClose($datawb) Netol 1
Netol Posted July 21, 2024 Author Posted July 21, 2024 36 minutes ago, Andreik said: If you want to create a list view item for each index from array then you can do it like this: ; Create a GUI here ;~ $cList = GUICtrlCreateList() Local $oExcel =_Excel_Open() $datawb = _Excel_BookOpen($oExcel,@ScriptDir & "\test.xlsx") ; $datawb.worksheets("info").select $LastRow = $datawb.ActiveSheet.UsedRange.Rows.Count $mydata = _Excel_RangeRead($datawb, Default,Default ) If IsArray($mydata) Then _ArrayDisplay($mydata) For $Index = 0 To UBound($mydata) - 1 GUICtrlCreateListViewItem($mydata[$Index], $cList) Next _Excel_BookClose($datawb) thanks a lot, In my code autoit dont open in a excel, just put excel to a array data. and the autoit display an error Array variable has incorrect number of subscripts or subscript dimension range exceeded.: the range of excel is variable, but in this case is "A1:A48" cells i changed only one line Local $oExcel =_Excel_Open() $datawb = _Excel_BookOpen($oExcel,@ScriptDir & "\test.xlsx") ; $datawb.worksheets("info").select $LastRow = $datawb.ActiveSheet.UsedRange.Rows.Count $mydata = _Excel_RangeRead($datawb, Default,Default ) If IsArray($mydata) Then _ArrayDisplay($mydata) For $Index = 0 To UBound($mydata) - 1 GUICtrlCreateListViewItem($mydata[$Index], $List1) Next _Excel_BookClose($datawb)
Netol Posted July 21, 2024 Author Posted July 21, 2024 38 minutes ago, Andreik said: Post the excel file or a sample. This is the excel file. test.xlsx
Solution Andreik Posted July 21, 2024 Solution Posted July 21, 2024 Example for first two columns, you can do it for all columns: #include <Excel.au3> $hGUI = GUICreate('Test', 600, 400) $cList = GUICtrlCreateListView('Cámara|7/12/2024', 10, 10, 580, 380) GUISetState(@SW_SHOW, $hGUI) LoadExcel($cList, @ScriptDir & '\test.xlsx') Do Until GUIGetMsg() = -3 Func LoadExcel($cList, $sPath) Local $oExcel =_Excel_Open(False) Local $oWorkbook = _Excel_BookOpen($oExcel, $sPath) Local $vData = _Excel_RangeRead($oWorkbook) If Not IsArray($vData) Then Return SetError(1, 0, 0) For $Index = 1 To UBound($vData) - 1 GUICtrlCreateListViewItem($vData[$Index][0] & '|' & $vData[$Index][1], $cList) Next _Excel_BookClose($oWorkbook) _Excel_Close($oExcel) EndFunc Netol 1
Netol Posted July 21, 2024 Author Posted July 21, 2024 41 minutes ago, Andreik said: Example for first two columns, you can do it for all columns: #include <Excel.au3> $hGUI = GUICreate('Test', 600, 400) $cList = GUICtrlCreateListView('Cámara|7/12/2024', 10, 10, 580, 380) GUISetState(@SW_SHOW, $hGUI) LoadExcel($cList, @ScriptDir & '\test.xlsx') Do Until GUIGetMsg() = -3 Func LoadExcel($cList, $sPath) Local $oExcel =_Excel_Open(False) Local $oWorkbook = _Excel_BookOpen($oExcel, $sPath) Local $vData = _Excel_RangeRead($oWorkbook) If Not IsArray($vData) Then Return SetError(1, 0, 0) For $Index = 1 To UBound($vData) - 1 GUICtrlCreateListViewItem($vData[$Index][0] & '|' & $vData[$Index][1], $cList) Next _Excel_BookClose($oWorkbook) _Excel_Close($oExcel) EndFunc I copy your code and this is the resut. Dont copy the data
Andreik Posted July 21, 2024 Posted July 21, 2024 You should really start to learn basics of AutoIt. Literally there is only one place in the code where the function might end before loading the list view with items and this place is where the result of _Excel_RangeRead() is verified to be an array. It might also be possible to exist a small delay if you have a potato PC and a large set of data. Anyway, if I were you I would take a break and get a basic understanding of the language.
Netol Posted July 22, 2024 Author Posted July 22, 2024 2 hours ago, Andreik said: You should really start to learn basics of AutoIt. Literally there is only one place in the code where the function might end before loading the list view with items and this place is where the result of _Excel_RangeRead() is verified to be an array. It might also be possible to exist a small delay if you have a potato PC and a large set of data. Anyway, if I were you I would take a break and get a basic understanding of the language. Hello, I am learning and I am not an expert, that is why I consult in this group that is created to help those who have questions. I managed to modify the code and solved the problem. Here is my code: #include <Excel.au3> $hGUI = GUICreate('Test', 600, 400) $List1 = GUICtrlCreateListView('Cámara|12-07-2024|28-06-2024|17-06-2024|31-05-2024|17-05-2024|03-05-2024|19-04-2024|05-04-2024|22-03-2024|08-03-2024|23-02-2024|09-02-2024|02-02-2024|26-01-2024|19-01-2024|12-01-2024', 10, 10, 580, 380) GUISetState(@SW_SHOW, $hGUI) LoadExcel($List1, "C:\Mis Documentos\_clientes\EBCO\Centro comercial Chicureo\Aplicación Navegación" & '\test.xlsx') Do Until GUIGetMsg() = -3 Func LoadExcel($cList, $sPath) Local $oExcel =_Excel_Open(False) Local $oWorkbook = _Excel_BookOpen($oExcel, $sPath) Local $vData = _Excel_RangeRead($oWorkbook) sleep(200) ; MsgBox($MB_SYSTEMMODAL, "$vData", $vData) If Not IsArray($vData) Then Return SetError(1, 0, 0) For $Index = 1 To UBound($vData) - 1 GUICtrlCreateListViewItem($vData[$Index][0] & '|' & $vData[$Index][1] _ & '|' & $vData[$Index][2] _ & '|' & $vData[$Index][3] _ & '|' & $vData[$Index][4] _ & '|' & $vData[$Index][5] _ & '|' & $vData[$Index][6] _ & '|' & $vData[$Index][7] _ & '|' & $vData[$Index][8] _ & '|' & $vData[$Index][9] _ & '|' & $vData[$Index][10] _ & '|' & $vData[$Index][11] _ & '|' & $vData[$Index][12] _ & '|' & $vData[$Index][13] _ & '|' & $vData[$Index][14] _ & '|' & $vData[$Index][15] _ & '|' & $vData[$Index][16] _ , $List1) ; GUICtrlCreateListViewItem($vData[$Index][0] & '|' & $vData[$Index][2], $cList) Next _Excel_BookClose($oWorkbook) _Excel_Close($oExcel) EndFunc thank you
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now