hyperjase Posted February 9, 2015 Share Posted February 9, 2015 (edited) Think this may be simpler than I suspect but, I have a range of cells from a spreadsheet and I need to put them individually into an array to dump into SQL, how do I format from RangeRead to an array? Couldn't find any suitable topics when I searched... Edited February 9, 2015 by hyperjase Link to comment Share on other sites More sharing options...
MikahS Posted February 9, 2015 Share Posted February 9, 2015 (edited) If you look at example 2 in the helpfile for _Excel_RangeRead they show how to specify a range, which would return a 0 based array. #include <Array.au3> #include <Excel.au3> #include <MsgBoxConstants.au3> ; Create application object and open an example workbook Local $oAppl = _Excel_Open() If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeRead Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended) Local $oWorkbook = _Excel_BookOpen($oAppl, @ScriptDir & "\Extras\_Excel1.xls") If @error Then MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeRead Example", "Error opening workbook '" & @ScriptDir & "\Extras\_Excel1.xls'." & @CRLF & "@error = " & @error & ", @extended = " & @extended) _Excel_Close($oAppl) Exit EndIf ; ***************************************************************************** ; Read the formulas of a cell range on sheet 2 of the specified workbook ; ***************************************************************************** Local $aResult = _Excel_RangeRead($oWorkbook, 2, "A1:C1", 2) If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeRead Example 2", "Error reading from workbook." & @CRLF & "@error = " & @error & ", @extended = " & @extended) MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeRead Example 2", "Data successfully read." & @CRLF & "Please click 'OK' to display the formulas of cells A1:C1 of sheet 2.") _ArrayDisplay($aResult, "Excel UDF: _Excel_RangeRead Example 2 - Cells A1:C1 of sheet 2") Edited February 9, 2015 by MikahS Snips & Scripts My Snips: graphCPUTemp ~ getENVvarsMy Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4 Feel free to use any of my code for your own use. Forum FAQ Link to comment Share on other sites More sharing options...
hyperjase Posted February 9, 2015 Author Share Posted February 9, 2015 (edited) I've used _ArrayDisplay but it only shows as a pop up, I need to access the Array in variable form so I can access each one (ie : $Var[1] ) and insert into SQL via an INSERT statement. I did read and try that part but doesn't appear to fit the bill of what I was looking for. Edited February 9, 2015 by hyperjase Link to comment Share on other sites More sharing options...
water Posted February 9, 2015 Share Posted February 9, 2015 Can you post what you've tried? My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
hyperjase Posted February 9, 2015 Author Share Posted February 9, 2015 (edited) Currently (non-working) I have this, working down the ArrayInsert route, think I can populate an array from RangeRead .... ? $oExcel = _Excel_Open(False) $Excel = _Excel_BookOpen ( $oExcel, $fFile , False, True ) $Output = _Excel_RangeRead ( $Excel, Default,"B12:V12",1) _ArrayInsert($Array,"",$Output,0,",") MsgBox(0,"",$Array[1]) _Excel_BookClose ($Excel) _Excel_Close($oExcel) The $Output works perfectly when used with ArrayDisplay but just can't figure out the link between what that does to adding each of the 21 figures to an array. I also have to move down a row to B13:V13 for a second set of figures, all of which need to be dumped into SQL. Edited February 9, 2015 by hyperjase Link to comment Share on other sites More sharing options...
MikahS Posted February 9, 2015 Share Posted February 9, 2015 (edited) Posting what you have tried, including script, will help us out greatly. Did you try using _ArrayDisplay($output, "this is the output") ? EDIT: it looks like you are trying to display the wrong array. I see how you are using _ArrayInsert now. EDIT: I will leave this to the gurus Edited February 9, 2015 by MikahS Snips & Scripts My Snips: graphCPUTemp ~ getENVvarsMy Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4 Feel free to use any of my code for your own use. Forum FAQ Link to comment Share on other sites More sharing options...
hyperjase Posted February 9, 2015 Author Share Posted February 9, 2015 Sadly my experience with Arrays isn't great, I'm trying to create an array with the data which is output by the RangeRead, but I'm not confident I'm creating the array correctly - I also have no idea if there is a delimiter and which that delimiter actually is. Link to comment Share on other sites More sharing options...
water Posted February 9, 2015 Share Posted February 9, 2015 Can you please describe in simple terms what _ArrayInsert should do? My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
water Posted February 9, 2015 Share Posted February 9, 2015 Parameter 2 for _ArrayInsert (set by you to "") is wrong. Please check the help file. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
hyperjase Posted February 10, 2015 Author Share Posted February 10, 2015 (edited) The output from RangeRead works fine using ArrayDisplay (shows perfectly the data I need to extract), using the ArrayInsert I was attempting to iterate through the RangeRead and insert each figure into the Array. I understand that the second parameter is wrong but my issue is, no matter what I do I can't output what ReadRange gets, MsgBox doesn't display anything. Here is updated code which still doesn't work: $oExcel = _Excel_Open(False) $Excel = _Excel_BookOpen ( $oExcel, $fFile , False, True ) $Output = _Excel_RangeRead ( $Excel, Default,"B12:V13",1) _ArrayInsert($Array,0,$Output,0,",") MsgBox(0,"",$Array[1]) _Excel_BookClose ($Excel) _Excel_Close($oExcel) With an error: "SQL Test.au3" (16) : ==> Subscript used on non-accessible variable.: MsgBox(0,"",$Array[1]) MsgBox(0,"",$Array^ ERROR Edited February 10, 2015 by hyperjase Link to comment Share on other sites More sharing options...
water Posted February 10, 2015 Share Posted February 10, 2015 Sorry, I still don't get it. _Excel_RangeRead already returns an array. Why do you want to insert the data into another array? The returned array has two lines and a lot of columns. Do you need to transform the array? How should the modified array look like? My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
hyperjase Posted February 10, 2015 Author Share Posted February 10, 2015 RangeRead does give me the Array but when I try this code: $Output = _Excel_RangeRead ( $Excel, Default,"B12:V13",1) MsgBox(0,"",$Output[0]) The MsgBox does not display anything, with the Array, I would have expected to see the first figure from the array? Link to comment Share on other sites More sharing options...
hyperjase Posted February 10, 2015 Author Share Posted February 10, 2015 All I need to do is access the Array from RangeRead, then using a while loop to iterate through each one, putting each figure into an SQL INSERT statement. Link to comment Share on other sites More sharing options...
Solution water Posted February 10, 2015 Solution Share Posted February 10, 2015 In your case _Excel_RangeRead returns a 2D array (because B12:V13 returns 2 rows and multiple columns). Hence you need to use MsgBox(0,"",$Output[0][0]) MikahS 1 My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
hyperjase Posted February 10, 2015 Author Share Posted February 10, 2015 Ah! 2D array, never dealt with them and your solution I'd never had attempted - many thanks for your invaluable assistance! Link to comment Share on other sites More sharing options...
water Posted February 10, 2015 Share Posted February 10, 2015 My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
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