<?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 How to Retrieve Sheet Names from an Excel File in TOS DI 6.4.1? in Talend Studio</title>
    <link>https://community.qlik.com/t5/Talend-Studio/How-to-Retrieve-Sheet-Names-from-an-Excel-File-in-TOS-DI-6-4-1/m-p/2494914#M143253</link>
    <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Thread Body:&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;Hello Talend Community,&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I’m using &lt;STRONG&gt;Talend Open Studio for Data Integration (TOS DI) 6.4.1&lt;/STRONG&gt; and need to retrieve the names of all the sheets from an Excel file. I’ve tried several approaches, but none seem to work. Here’s what I’ve done so far:&lt;/P&gt;
&lt;HR /&gt;
&lt;H3&gt;&lt;STRONG&gt;What I’ve Tried:&lt;/STRONG&gt;&lt;/H3&gt;
&lt;H4&gt;&lt;STRONG&gt;1. Using Apache POI in a &lt;CODE&gt;tJava&lt;/CODE&gt; Component:&lt;/STRONG&gt;&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;I’ve added &lt;CODE&gt;poi-3.10.1.jar&lt;/CODE&gt; to my job using the &lt;CODE&gt;tLibraryLoad&lt;/CODE&gt; component.&lt;/LI&gt;
&lt;LI&gt;Below is the Java code I used in &lt;CODE&gt;tJava&lt;/CODE&gt;:&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class="contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950"&gt;
&lt;DIV class="flex items-center text-token-text-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md h-9 bg-token-sidebar-surface-primary dark:bg-token-main-surface-secondary select-none"&gt;java&lt;/DIV&gt;
&lt;DIV class="sticky top-9 md:top-[5.75rem]"&gt;
&lt;DIV class="absolute bottom-0 right-2 flex h-9 items-center"&gt;
&lt;DIV class="flex items-center rounded bg-token-sidebar-surface-primary px-2 font-sans text-xs text-token-text-secondary dark:bg-token-main-surface-secondary"&gt;&lt;SPAN class="" data-state="closed"&gt;&lt;BUTTON class="flex gap-1 items-center select-none py-1"&gt;Copy code&lt;/BUTTON&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="overflow-y-auto p-4" dir="ltr"&gt;&lt;CODE class="!whitespace-pre hljs language-java"&gt;&lt;SPAN class="hljs-keyword"&gt;import&lt;/SPAN&gt; org.apache.poi.ss.usermodel.Workbook;
&lt;SPAN class="hljs-keyword"&gt;import&lt;/SPAN&gt; org.apache.poi.ss.usermodel.WorkbookFactory;
&lt;SPAN class="hljs-keyword"&gt;import&lt;/SPAN&gt; java.io.FileInputStream;

&lt;SPAN class="hljs-keyword"&gt;try&lt;/SPAN&gt; {
    &lt;SPAN class="hljs-comment"&gt;// File path from context&lt;/SPAN&gt;
    &lt;SPAN class="hljs-type"&gt;String&lt;/SPAN&gt; &lt;SPAN class="hljs-variable"&gt;filePath&lt;/SPAN&gt; &lt;SPAN class="hljs-operator"&gt;=&lt;/SPAN&gt; context.inputExcelFile;

    &lt;SPAN class="hljs-comment"&gt;// Open the Excel file&lt;/SPAN&gt;
    &lt;SPAN class="hljs-type"&gt;FileInputStream&lt;/SPAN&gt; &lt;SPAN class="hljs-variable"&gt;fis&lt;/SPAN&gt; &lt;SPAN class="hljs-operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;new&lt;/SPAN&gt; &lt;SPAN class="hljs-title class_"&gt;FileInputStream&lt;/SPAN&gt;(filePath);
    &lt;SPAN class="hljs-type"&gt;Workbook&lt;/SPAN&gt; &lt;SPAN class="hljs-variable"&gt;workbook&lt;/SPAN&gt; &lt;SPAN class="hljs-operator"&gt;=&lt;/SPAN&gt; WorkbookFactory.create(fis);

    &lt;SPAN class="hljs-comment"&gt;// Print sheet names&lt;/SPAN&gt;
    &lt;SPAN class="hljs-type"&gt;int&lt;/SPAN&gt; &lt;SPAN class="hljs-variable"&gt;numberOfSheets&lt;/SPAN&gt; &lt;SPAN class="hljs-operator"&gt;=&lt;/SPAN&gt; workbook.getNumberOfSheets();
    &lt;SPAN class="hljs-keyword"&gt;for&lt;/SPAN&gt; (&lt;SPAN class="hljs-type"&gt;int&lt;/SPAN&gt; &lt;SPAN class="hljs-variable"&gt;i&lt;/SPAN&gt; &lt;SPAN class="hljs-operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="hljs-number"&gt;0&lt;/SPAN&gt;; i &amp;lt; numberOfSheets; i++) {
        System.out.println(&lt;SPAN class="hljs-string"&gt;"Sheet Name: "&lt;/SPAN&gt; + workbook.getSheetName(i));
    }

    &lt;SPAN class="hljs-comment"&gt;// Close workbook and stream&lt;/SPAN&gt;
    workbook.close();
    fis.close();
} &lt;SPAN class="hljs-keyword"&gt;catch&lt;/SPAN&gt; (Exception e) {
    e.printStackTrace();
}
&lt;/CODE&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&lt;LI-WRAPPER&gt;&lt;/LI-WRAPPER&gt;&lt;/P&gt;
&lt;PRE class="!overflow-visible"&gt;&amp;nbsp;&lt;/PRE&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Result&lt;/STRONG&gt;: I get errors such as &lt;CODE&gt;Can only iterate over an array or instance of java.lang.Iterable&lt;/CODE&gt; or &lt;CODE&gt;NullPointerException&lt;/CODE&gt;.&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;
&lt;H4&gt;&lt;STRONG&gt;2. Using Other Approaches:&lt;/STRONG&gt;&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;I also tried using older Apache POI versions (&lt;CODE&gt;poi-3.10.1.jar&lt;/CODE&gt;) but still face the same issues.&lt;/LI&gt;
&lt;LI&gt;Verified that the Excel file exists and is valid.&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;
&lt;H3&gt;&lt;STRONG&gt;Environment Details:&lt;/STRONG&gt;&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;TOS DI Version&lt;/STRONG&gt;: 6.4.1&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Excel File Format&lt;/STRONG&gt;: &lt;CODE&gt;.xlsx&lt;/CODE&gt; (Office 365 generated)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Java Version&lt;/STRONG&gt;: 1.8 (as used by Talend Studio)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Apache POI Library&lt;/STRONG&gt;: poi-3.10.1.jar&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;
&lt;H3&gt;&lt;STRONG&gt;What I Need Help With:&lt;/STRONG&gt;&lt;/H3&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Is there a native way in Talend to list all sheet names from an Excel file?&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;If Apache POI is required, what specific libraries and versions should I use to avoid compatibility issues with Talend?&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Can someone provide a working example or guide me through the correct steps to retrieve sheet names?&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;I’ve spent hours trying to get this to work, but I’m stuck. Any help or guidance would be greatly appreciated!&lt;/P&gt;
&lt;P&gt;Thank you in advance for your support!&lt;/P&gt;</description>
    <pubDate>Wed, 27 Nov 2024 14:41:30 GMT</pubDate>
    <dc:creator>tosuser21</dc:creator>
    <dc:date>2024-11-27T14:41:30Z</dc:date>
    <item>
      <title>How to Retrieve Sheet Names from an Excel File in TOS DI 6.4.1?</title>
      <link>https://community.qlik.com/t5/Talend-Studio/How-to-Retrieve-Sheet-Names-from-an-Excel-File-in-TOS-DI-6-4-1/m-p/2494914#M143253</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Thread Body:&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;Hello Talend Community,&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I’m using &lt;STRONG&gt;Talend Open Studio for Data Integration (TOS DI) 6.4.1&lt;/STRONG&gt; and need to retrieve the names of all the sheets from an Excel file. I’ve tried several approaches, but none seem to work. Here’s what I’ve done so far:&lt;/P&gt;
&lt;HR /&gt;
&lt;H3&gt;&lt;STRONG&gt;What I’ve Tried:&lt;/STRONG&gt;&lt;/H3&gt;
&lt;H4&gt;&lt;STRONG&gt;1. Using Apache POI in a &lt;CODE&gt;tJava&lt;/CODE&gt; Component:&lt;/STRONG&gt;&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;I’ve added &lt;CODE&gt;poi-3.10.1.jar&lt;/CODE&gt; to my job using the &lt;CODE&gt;tLibraryLoad&lt;/CODE&gt; component.&lt;/LI&gt;
&lt;LI&gt;Below is the Java code I used in &lt;CODE&gt;tJava&lt;/CODE&gt;:&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class="contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950"&gt;
&lt;DIV class="flex items-center text-token-text-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md h-9 bg-token-sidebar-surface-primary dark:bg-token-main-surface-secondary select-none"&gt;java&lt;/DIV&gt;
&lt;DIV class="sticky top-9 md:top-[5.75rem]"&gt;
&lt;DIV class="absolute bottom-0 right-2 flex h-9 items-center"&gt;
&lt;DIV class="flex items-center rounded bg-token-sidebar-surface-primary px-2 font-sans text-xs text-token-text-secondary dark:bg-token-main-surface-secondary"&gt;&lt;SPAN class="" data-state="closed"&gt;&lt;BUTTON class="flex gap-1 items-center select-none py-1"&gt;Copy code&lt;/BUTTON&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="overflow-y-auto p-4" dir="ltr"&gt;&lt;CODE class="!whitespace-pre hljs language-java"&gt;&lt;SPAN class="hljs-keyword"&gt;import&lt;/SPAN&gt; org.apache.poi.ss.usermodel.Workbook;
&lt;SPAN class="hljs-keyword"&gt;import&lt;/SPAN&gt; org.apache.poi.ss.usermodel.WorkbookFactory;
&lt;SPAN class="hljs-keyword"&gt;import&lt;/SPAN&gt; java.io.FileInputStream;

&lt;SPAN class="hljs-keyword"&gt;try&lt;/SPAN&gt; {
    &lt;SPAN class="hljs-comment"&gt;// File path from context&lt;/SPAN&gt;
    &lt;SPAN class="hljs-type"&gt;String&lt;/SPAN&gt; &lt;SPAN class="hljs-variable"&gt;filePath&lt;/SPAN&gt; &lt;SPAN class="hljs-operator"&gt;=&lt;/SPAN&gt; context.inputExcelFile;

    &lt;SPAN class="hljs-comment"&gt;// Open the Excel file&lt;/SPAN&gt;
    &lt;SPAN class="hljs-type"&gt;FileInputStream&lt;/SPAN&gt; &lt;SPAN class="hljs-variable"&gt;fis&lt;/SPAN&gt; &lt;SPAN class="hljs-operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;new&lt;/SPAN&gt; &lt;SPAN class="hljs-title class_"&gt;FileInputStream&lt;/SPAN&gt;(filePath);
    &lt;SPAN class="hljs-type"&gt;Workbook&lt;/SPAN&gt; &lt;SPAN class="hljs-variable"&gt;workbook&lt;/SPAN&gt; &lt;SPAN class="hljs-operator"&gt;=&lt;/SPAN&gt; WorkbookFactory.create(fis);

    &lt;SPAN class="hljs-comment"&gt;// Print sheet names&lt;/SPAN&gt;
    &lt;SPAN class="hljs-type"&gt;int&lt;/SPAN&gt; &lt;SPAN class="hljs-variable"&gt;numberOfSheets&lt;/SPAN&gt; &lt;SPAN class="hljs-operator"&gt;=&lt;/SPAN&gt; workbook.getNumberOfSheets();
    &lt;SPAN class="hljs-keyword"&gt;for&lt;/SPAN&gt; (&lt;SPAN class="hljs-type"&gt;int&lt;/SPAN&gt; &lt;SPAN class="hljs-variable"&gt;i&lt;/SPAN&gt; &lt;SPAN class="hljs-operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="hljs-number"&gt;0&lt;/SPAN&gt;; i &amp;lt; numberOfSheets; i++) {
        System.out.println(&lt;SPAN class="hljs-string"&gt;"Sheet Name: "&lt;/SPAN&gt; + workbook.getSheetName(i));
    }

    &lt;SPAN class="hljs-comment"&gt;// Close workbook and stream&lt;/SPAN&gt;
    workbook.close();
    fis.close();
} &lt;SPAN class="hljs-keyword"&gt;catch&lt;/SPAN&gt; (Exception e) {
    e.printStackTrace();
}
&lt;/CODE&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&lt;LI-WRAPPER&gt;&lt;/LI-WRAPPER&gt;&lt;/P&gt;
&lt;PRE class="!overflow-visible"&gt;&amp;nbsp;&lt;/PRE&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Result&lt;/STRONG&gt;: I get errors such as &lt;CODE&gt;Can only iterate over an array or instance of java.lang.Iterable&lt;/CODE&gt; or &lt;CODE&gt;NullPointerException&lt;/CODE&gt;.&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;
&lt;H4&gt;&lt;STRONG&gt;2. Using Other Approaches:&lt;/STRONG&gt;&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;I also tried using older Apache POI versions (&lt;CODE&gt;poi-3.10.1.jar&lt;/CODE&gt;) but still face the same issues.&lt;/LI&gt;
&lt;LI&gt;Verified that the Excel file exists and is valid.&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;
&lt;H3&gt;&lt;STRONG&gt;Environment Details:&lt;/STRONG&gt;&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;TOS DI Version&lt;/STRONG&gt;: 6.4.1&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Excel File Format&lt;/STRONG&gt;: &lt;CODE&gt;.xlsx&lt;/CODE&gt; (Office 365 generated)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Java Version&lt;/STRONG&gt;: 1.8 (as used by Talend Studio)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Apache POI Library&lt;/STRONG&gt;: poi-3.10.1.jar&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;
&lt;H3&gt;&lt;STRONG&gt;What I Need Help With:&lt;/STRONG&gt;&lt;/H3&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Is there a native way in Talend to list all sheet names from an Excel file?&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;If Apache POI is required, what specific libraries and versions should I use to avoid compatibility issues with Talend?&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Can someone provide a working example or guide me through the correct steps to retrieve sheet names?&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;I’ve spent hours trying to get this to work, but I’m stuck. Any help or guidance would be greatly appreciated!&lt;/P&gt;
&lt;P&gt;Thank you in advance for your support!&lt;/P&gt;</description>
      <pubDate>Wed, 27 Nov 2024 14:41:30 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/How-to-Retrieve-Sheet-Names-from-an-Excel-File-in-TOS-DI-6-4-1/m-p/2494914#M143253</guid>
      <dc:creator>tosuser21</dc:creator>
      <dc:date>2024-11-27T14:41:30Z</dc:date>
    </item>
  </channel>
</rss>

