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");
+ }
}