<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic In tJavaRow, how to skip to the next sheet? in Talend Studio</title>
    <link>https://community.qlik.com/t5/Talend-Studio/In-tJavaRow-how-to-skip-to-the-next-sheet/m-p/2297934#M70454</link>
    <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;My goal is to extract data from multiple sheets from an Excel file, while avoiding to loop over all rows of all sheets, given that a prior process stashed the last line to exploit in each sheet if any.&lt;/P&gt;&lt;P&gt;So here a tFileInputExcel feeds a tJavaRow, and basiacally, after looking at the generated text.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Basically, I’m looking for a way to express "if some condition are met, skip the rest of rows contained on the current sheet, and move to the next one".&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is a concrete example of what I tried to implement :&lt;/P&gt;&lt;P&gt;String sheet = (String) globalMap.get("tFileInputExcel_2_CURRENT_SHEET"); &lt;/P&gt;&lt;P&gt; boolean process = true;&lt;/P&gt;&lt;P&gt; for(String key: globalMap.keySet()) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;process = key.matches(sheet + "\\d\\+"); // globalMap contains a "shitname + row-number" key for each line to process&lt;/P&gt;&lt;P&gt;&amp;nbsp;if(!process) {break;}&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;if(!process) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;System.out.println( String.format("Skip sheet '%s': no matching data to extract.", sheet)&amp;nbsp;);&lt;/P&gt;&lt;P&gt;/* Here is code copied from the generated code that I thought possibly relevant to achieve the stated goal */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (rowCount_tFileInputExcel_2 &amp;lt;= i_tFileInputExcel_2) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sheet_tFileInputExcel_2 = sheetList_tFileInputExcel_2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.get(++sheetIndex_tFileInputExcel_2);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;currentRows_tFileInputExcel_2 = sheet_tFileInputExcel_2.getRows();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;/* End of code copied from the generated one */&lt;/P&gt;&lt;P&gt;&amp;nbsp;continue;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;Now, when run, this will lead to the Exception with the message "Exception in component tJavaRow_1 (Parse_Excel_6)":&lt;/P&gt;&lt;P&gt;Exception in component tJavaRow_1 (Parse_Excel_6)&lt;/P&gt;&lt;P&gt;java.lang.IndexOutOfBoundsException: Index: 37, Size: 37&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at java.util.ArrayList.rangeCheck(Unknown Source)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at java.util.ArrayList.get(Unknown Source)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at ars.parse_excel_6_0_1.Parse_Excel_6.tFileInputExcel_2Process(Parse_Excel_6.java:7883)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at ars.parse_excel_6_0_1.Parse_Excel_6.tFileInputExcel_1Process(Parse_Excel_6.java:1357)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at ars.parse_excel_6_0_1.Parse_Excel_6.runJobInTOS(Parse_Excel_6.java:8371)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at ars.parse_excel_6_0_1.Parse_Excel_6.main(Parse_Excel_6.java:8220)&lt;/P&gt;&lt;P&gt;Would someone have some recommendation? Likely this is due to the increment of the sheet pointer going to far, but I didn’t figure out how to deal properly with the context produced with the generated code.&lt;/P&gt;</description>
    <pubDate>Tue, 06 Oct 2020 14:18:56 GMT</pubDate>
    <dc:creator>msg1</dc:creator>
    <dc:date>2020-10-06T14:18:56Z</dc:date>
    <item>
      <title>In tJavaRow, how to skip to the next sheet?</title>
      <link>https://community.qlik.com/t5/Talend-Studio/In-tJavaRow-how-to-skip-to-the-next-sheet/m-p/2297934#M70454</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;My goal is to extract data from multiple sheets from an Excel file, while avoiding to loop over all rows of all sheets, given that a prior process stashed the last line to exploit in each sheet if any.&lt;/P&gt;&lt;P&gt;So here a tFileInputExcel feeds a tJavaRow, and basiacally, after looking at the generated text.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Basically, I’m looking for a way to express "if some condition are met, skip the rest of rows contained on the current sheet, and move to the next one".&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is a concrete example of what I tried to implement :&lt;/P&gt;&lt;P&gt;String sheet = (String) globalMap.get("tFileInputExcel_2_CURRENT_SHEET"); &lt;/P&gt;&lt;P&gt; boolean process = true;&lt;/P&gt;&lt;P&gt; for(String key: globalMap.keySet()) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;process = key.matches(sheet + "\\d\\+"); // globalMap contains a "shitname + row-number" key for each line to process&lt;/P&gt;&lt;P&gt;&amp;nbsp;if(!process) {break;}&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;if(!process) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;System.out.println( String.format("Skip sheet '%s': no matching data to extract.", sheet)&amp;nbsp;);&lt;/P&gt;&lt;P&gt;/* Here is code copied from the generated code that I thought possibly relevant to achieve the stated goal */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (rowCount_tFileInputExcel_2 &amp;lt;= i_tFileInputExcel_2) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sheet_tFileInputExcel_2 = sheetList_tFileInputExcel_2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.get(++sheetIndex_tFileInputExcel_2);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;currentRows_tFileInputExcel_2 = sheet_tFileInputExcel_2.getRows();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;/* End of code copied from the generated one */&lt;/P&gt;&lt;P&gt;&amp;nbsp;continue;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;Now, when run, this will lead to the Exception with the message "Exception in component tJavaRow_1 (Parse_Excel_6)":&lt;/P&gt;&lt;P&gt;Exception in component tJavaRow_1 (Parse_Excel_6)&lt;/P&gt;&lt;P&gt;java.lang.IndexOutOfBoundsException: Index: 37, Size: 37&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at java.util.ArrayList.rangeCheck(Unknown Source)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at java.util.ArrayList.get(Unknown Source)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at ars.parse_excel_6_0_1.Parse_Excel_6.tFileInputExcel_2Process(Parse_Excel_6.java:7883)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at ars.parse_excel_6_0_1.Parse_Excel_6.tFileInputExcel_1Process(Parse_Excel_6.java:1357)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at ars.parse_excel_6_0_1.Parse_Excel_6.runJobInTOS(Parse_Excel_6.java:8371)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at ars.parse_excel_6_0_1.Parse_Excel_6.main(Parse_Excel_6.java:8220)&lt;/P&gt;&lt;P&gt;Would someone have some recommendation? Likely this is due to the increment of the sheet pointer going to far, but I didn’t figure out how to deal properly with the context produced with the generated code.&lt;/P&gt;</description>
      <pubDate>Tue, 06 Oct 2020 14:18:56 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/In-tJavaRow-how-to-skip-to-the-next-sheet/m-p/2297934#M70454</guid>
      <dc:creator>msg1</dc:creator>
      <dc:date>2020-10-06T14:18:56Z</dc:date>
    </item>
  </channel>
</rss>

