This is an automated email from the ASF dual-hosted git repository.

hansva pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git


The following commit(s) were added to refs/heads/main by this push:
     new b9ef3941f6 Resolve variables in Excel sheet regex patterns (#7683)
b9ef3941f6 is described below

commit b9ef3941f66d3db2231035698360e91ecc450f94
Author: Wassim <[email protected]>
AuthorDate: Thu Jul 30 11:47:26 2026 +0200

    Resolve variables in Excel sheet regex patterns (#7683)
---
 .../pipeline/transforms/excelinput/ExcelInput.java  |  7 ++++---
 .../transforms/excelinput/ExcelInputDialog.java     |  1 +
 .../excelinput/ExcelInputContentParsingTest.java    | 21 +++++++++++++++++++++
 3 files changed, 26 insertions(+), 3 deletions(-)

diff --git 
a/plugins/transforms/excel/src/main/java/org/apache/hop/pipeline/transforms/excelinput/ExcelInput.java
 
b/plugins/transforms/excel/src/main/java/org/apache/hop/pipeline/transforms/excelinput/ExcelInput.java
index df76f8e381..55ffc21d4d 100644
--- 
a/plugins/transforms/excel/src/main/java/org/apache/hop/pipeline/transforms/excelinput/ExcelInput.java
+++ 
b/plugins/transforms/excel/src/main/java/org/apache/hop/pipeline/transforms/excelinput/ExcelInput.java
@@ -509,9 +509,10 @@ public class ExcelInput extends 
BaseTransform<ExcelInputMeta, ExcelInputData> {
 
     for (ExcelInputMeta.EISheet sheet : meta.getSheets()) {
       if (sheet.isRegex()) {
-        logBasic("Sheet regex pattern: [" + sheet.getName() + "]");
+        String sheetNameRegex = resolve(sheet.getName());
+        logBasic("Sheet regex pattern: [" + sheetNameRegex + "]");
         try {
-          Pattern pattern = Pattern.compile(sheet.getName());
+          Pattern pattern = Pattern.compile(sheetNameRegex);
           for (String sheetName : allSheetNames) {
             if (pattern.matcher(sheetName).matches()) {
               logBasic("  -> matched: [" + sheetName + "]");
@@ -523,7 +524,7 @@ public class ExcelInput extends 
BaseTransform<ExcelInputMeta, ExcelInputData> {
         } catch (PatternSyntaxException e) {
           logError(
               BaseMessages.getString(
-                  PKG, "ExcelInput.Error.InvalidSheetRegex", sheet.getName(), 
e.getMessage()));
+                  PKG, "ExcelInput.Error.InvalidSheetRegex", sheetNameRegex, 
e.getMessage()));
         }
       } else {
         logBasic("Sheet exact name: [" + sheet.getName() + "]");
diff --git 
a/plugins/transforms/excel/src/main/java/org/apache/hop/pipeline/transforms/excelinput/ExcelInputDialog.java
 
b/plugins/transforms/excel/src/main/java/org/apache/hop/pipeline/transforms/excelinput/ExcelInputDialog.java
index 9de9d58cc3..d7841d122a 100644
--- 
a/plugins/transforms/excel/src/main/java/org/apache/hop/pipeline/transforms/excelinput/ExcelInputDialog.java
+++ 
b/plugins/transforms/excel/src/main/java/org/apache/hop/pipeline/transforms/excelinput/ExcelInputDialog.java
@@ -489,6 +489,7 @@ public class ExcelInputDialog extends BaseTransformDialog {
             BaseMessages.getString(PKG, "ExcelInputDialog.SheetName.Column"),
             ColumnInfo.COLUMN_TYPE_TEXT,
             false);
+    shinfo[0].setUsingVariables(true);
     shinfo[1] =
         new ColumnInfo(
             BaseMessages.getString(PKG, "ExcelInputDialog.StartRow.Column"),
diff --git 
a/plugins/transforms/excel/src/test/java/org/apache/hop/pipeline/transforms/excelinput/ExcelInputContentParsingTest.java
 
b/plugins/transforms/excel/src/test/java/org/apache/hop/pipeline/transforms/excelinput/ExcelInputContentParsingTest.java
index 99ac06b2d3..b912a1c573 100644
--- 
a/plugins/transforms/excel/src/test/java/org/apache/hop/pipeline/transforms/excelinput/ExcelInputContentParsingTest.java
+++ 
b/plugins/transforms/excel/src/test/java/org/apache/hop/pipeline/transforms/excelinput/ExcelInputContentParsingTest.java
@@ -338,4 +338,25 @@ class ExcelInputContentParsingTest extends 
BaseExcelParsingTest {
     assertEquals(firstResult, rows.get(0)[0], "Wrong first result");
     assertEquals(lastResult, rows.get(TEST_ROW_LIMIT_MULTIPLE_SHEET - 1)[0], 
"Wrong last result");
   }
+
+  @Test
+  void testSheetRegexResolvedFromVariable() throws Exception {
+    meta.setSpreadSheetType(SpreadSheetType.SAX_POI);
+    meta.setStartsWithHeader(true);
+    setFields(new ExcelInputField("COL", -1, -1));
+
+    ExcelInputMeta.EISheet sheet = new ExcelInputMeta.EISheet();
+    sheet.setName("${SHEET_NAME_REGEX}");
+    sheet.setRegex(true);
+    meta.getSheets().add(sheet);
+
+    init("pdi-17765.xlsx");
+    transform.setVariable("SHEET_NAME_REGEX", "Sheet[12]");
+    process();
+
+    checkErrors();
+    assertEquals(40, rows.size(), "Wrong row count");
+    assertEquals("1.0", rows.get(0)[0], "Wrong first result");
+    assertEquals("101.0", rows.get(rows.size() - 1)[0], "Wrong last result");
+  }
 }

Reply via email to