frankhack1 Posted December 17, 2014 Share Posted December 17, 2014 (edited) Hi ! I have a .csv with 6 columns and 31 rows. I need a script to read a .csv file from the beginning of the Column 5 and from the Row 2 (since the row 1 is the title I don't want to use that info) and all the info that is on Column 5 to Send each data and then {{TAB 2}} and send next data and {{TAB 2}} and so on till the end of the rows in Column 5. THe script should only move from beginning to end on all the rows in column 5. THis is what I have: #include <GUIConstants.au3> #include <string.au3> ; FUNCTION TO RECOGNIZE THE GOOGLE CHROME WINDOW Func Chrome () AutoItSetOption('WinTitleMatchMode', 2) $tbWin = 'Chrome' WinActivate($tbWin) EndFunc ' OPEN OR READ CSV FILE $file = FileOpen("C:\Users\admin\Desktop\Dropbox\iMacros\Datasources\01_PISOS\Precios\Espana\Barcelona\NEW\Diciembre\NH_01\01.csv", 0) If $file = -1 Then MsgBox(0, "error", "File doesn't exist or can't be read") Exit EndIf ; Read in lines of text until the EOF is reached While 1 Local $line = FileReadLine($file) If @error = -1 Then ExitLoop $input = StringSplit($line, ",") Local $value1 = $input[5] Send($value1) WEnd This is the content that I have on the .csv file: "Day","Fecha","Month","Year","Estandar","Tarifa" "L","1","12","2014","15","<SP>" "M","2","12","2014","15","<SP>" "X","3","12","2014","15","<SP>" "J","4","12","2014","15","<SP>" "V","5","12","2014","20","<SP>" "S","6","12","2014","20","<SP>" "D","7","12","2014","15","<SP>" "L","8","12","2014","15","<SP>" "M","9","12","2014","15","<SP>" "X","10","12","2014","15","<SP>" "J","11","12","2014","15","<SP>" "V","12","12","2014","20","<SP>" "S","13","12","2014","20","<SP>" "D","14","12","2014","15","<SP>" "L","15","12","2014","15","<SP>" "M","16","12","2014","15","<SP>" "X","17","12","2014","15","<SP>" "J","18","12","2014","15","<SP>" "V","19","12","2014","15","<SP>" "S","20","12","2014","20","<SP>" "D","21","12","2014","20","<SP>" "L","22","12","2014","15","<SP>" "M","23","12","2014","15","<SP>" "X","24","12","2014","15","<SP>" "J","25","12","2014","15","<SP>" "V","26","12","2014","20","<SP>" "S","27","12","2014","20","<SP>" "D","28","12","2014","15","<SP>" "L","29","12","2014","25","<SP>" "M","30","12","2014","25","<SP>" "X","31","12","2014","25","<SP>" And on Google Chrome I already have the website where I want the data to go, but I'm getting all this in one whole line: "Estandar""15""15""15""15""20""20""15""15""15""15""15""20""20""15""15""15""15""15""15""20""20""15""15""15""15""20""20""15""25""25""25" How can I avoid the 1st row "Estandar" How can I take out the "" and just keep the data How can I Send data then {{TAB 2}} Send next data then {{TAB 2}} This an screenshot of where the data will go, basically, it should put a price on the each square and then send TAB twice to go to next square and put next data pulled from csv Frank Edited December 17, 2014 by frankhack1 Link to comment Share on other sites More sharing options...
mjolnirmarkiv Posted December 17, 2014 Share Posted December 17, 2014 (edited) You somehow managed to explain smth very simply very complicated. Not sure I got you, but here's an example how to read your CSV. Uncomment commented string to read specific row and column and show it in dialog box. expandcollapse popup#include <Array.au3> Global $a = ReadCSV ("D:\Temp\Test.csv") _ArrayDisplay ($a) ;MsgBox (0, "", StringReplace ($a[4][3], """", "")) Func ReadCSV ($p_csv_file) Local $file = FileOpen ($p_csv_file) If $file = -1 Then Return SetError (1, 0, 0) Local $s = FileRead ($file) FileClose ($file) Return StringToArray ($s, false, ",") EndFunc Func StringToArray ($p_string, $p_transpose_1d = false, $p_delim_col = "|", $p_delim_row = @CRLF, $p_arr_delim_col = Chr (31), $p_arr_delim_row = Chr (30)) Local $array, $rows, $cols, $last_row, $last_col $rows = StringSplit ($p_string, $p_delim_row, 3) $last_row = UBound ($rows) - 1 If $last_row < 1 Then ;Array rows = 0 $cols = StringSplit ($p_string, $p_delim_col, 3) $last_col = UBound ($cols) - 1 If $last_col < 1 Then ;Array rows = 0, columns = 0 Dim $array[1] If StringInStr ($p_string, $p_arr_delim_col) or StringInStr ($p_string, $p_arr_delim_row) Then $array[0] = StringToArray ($p_string, $p_transpose_1d, $p_arr_delim_col, $p_arr_delim_row) Else $array[0] = $p_string EndIf Else ;Array rows = 0, columns > 0 Dim $array[$last_col + 1] For $i = 0 To $last_col If StringInStr ($cols[$i], $p_arr_delim_col) or StringInStr ($cols[$i], $p_arr_delim_row) Then $array[$i] = StringToArray ($cols[$i], $p_transpose_1d, $p_arr_delim_col, $p_arr_delim_row) Else $array[$i] = $cols[$i] EndIf Next EndIf If $p_transpose_1d Then _ArrayTranspose ($array) Else ;Array rows > 0 $last_col = 0 For $i = 0 To $last_row StringReplace ($rows[$i], $p_delim_col, "") If @extended > $last_col Then $last_col = @extended Next If $last_col < 1 Then ;Array rows > 0, columns = 0 Dim $array[$last_row + 1] For $i = 0 To $last_row If StringInStr ($rows[$i], $p_arr_delim_col) or StringInStr ($rows[$i], $p_arr_delim_row) Then $array[$i] = StringToArray ($rows[$i], $p_transpose_1d, $p_arr_delim_col, $p_arr_delim_row) Else $array[$i] = $rows[$i] EndIf Next Else ;Array rows > 0, columns > 0 Dim $array[$last_row + 1][$last_col + 1] For $i = 0 To $last_row $cols = StringSplit ($rows[$i], $p_delim_col, 3) If $last_col > UBound ($cols) - 1 Then ReDim $cols[$last_col + 1] For $n = 0 To $last_col If StringInStr ($cols[$n], $p_arr_delim_col) or StringInStr ($cols[$n], $p_arr_delim_row) Then $array[$i][$n] = StringToArray ($cols[$n], $p_transpose_1d, $p_arr_delim_col, $p_arr_delim_row) Else $array[$i][$n] = $cols[$n] EndIf Next Next EndIf EndIf If not IsString ($p_string) Then SetError (1) If $p_string = "" Then SetError (2) Return $array EndFunc Edited December 17, 2014 by mjolnirmarkiv Link to comment Share on other sites More sharing options...
water Posted December 17, 2014 Share Posted December 17, 2014 I use this >UDF to parse a CSV file into an array. 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...
Moderators Melba23 Posted December 17, 2014 Moderators Share Posted December 17, 2014 frankhack1 and water,_FileReadToArray will parse a CSV file into an array from v3.3.12.0 on... M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
water Posted December 17, 2014 Share Posted December 17, 2014 Ops. Seems I'm not up to date 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...
frankhack1 Posted December 17, 2014 Author Share Posted December 17, 2014 (edited) HI ! With the other scripts that you gave me, I couldn't understanded it. But mine is more or less I got what I want, but I need to send TAB twice in order to jump to next box, please check video and you will see that all the info extracted from the .csv is going to the same place and this is wrong = This is how it should work = What I'm missing is the TAB part, also I want to start reading from the 2 line since the 1st line are the titles. My code modified is this: #include <GUIConstants.au3> #include <string.au3> ; FUNCTION TO RECOGNIZE THE GOOGLE CHROME WINDOW Func Chrome () AutoItSetOption('WinTitleMatchMode', 2) $tbWin = 'Chrome' WinActivate($tbWin) EndFunc ; OPEN OR READ CSV FILE $file = FileOpen("c:/01.csv", 0) If $file = -1 Then MsgBox(0, "error", "File doesn't exist or can't be read") Exit EndIf ; Read in lines of text until the EOF is reached While 1 Local $line = FileReadLine($file) If @error = -1 Then ExitLoop $input = StringSplit($line, ",") Local $value1 = $input[5] $aCsvData = StringReplace($value1, """", "") Call("Chrome") Send($aCsvData) WEnd Edited December 17, 2014 by frankhack1 Link to comment Share on other sites More sharing options...
mikell Posted December 18, 2014 Share Posted December 18, 2014 Of course you can easily extract the col (without title) using something like this #Include <Array.au3> $txt = FileRead("1.csv") $res = StringRegExp($txt, '(?m)^(?:.*?,){4}"(\d+)', 3) _ArrayDisplay($res) Sending to browser is another story 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