From fbc42680356a433945c5c9e7fc818ae4d9bd7bb1 Mon Sep 17 00:00:00 2001 From: Frederik Nielsen Date: Mon, 25 Mar 2024 07:50:01 +0100 Subject: [PATCH] Adding fallbacks to commercial license and properly skipping empty cells and empty value names --- ...b.DataIntegration.Providers.ExcelProvider.csproj | 2 +- src/ExcelProvider.cs | 1 + src/ExcelReader.cs | 13 +++++++++++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/Dynamicweb.DataIntegration.Providers.ExcelProvider.csproj b/src/Dynamicweb.DataIntegration.Providers.ExcelProvider.csproj index 41be6ac..6ec5dbf 100644 --- a/src/Dynamicweb.DataIntegration.Providers.ExcelProvider.csproj +++ b/src/Dynamicweb.DataIntegration.Providers.ExcelProvider.csproj @@ -1,6 +1,6 @@  - 10.0.10 + 10.0.11 1.0.0 Excel Provider Excel Provider diff --git a/src/ExcelProvider.cs b/src/ExcelProvider.cs index 8de93f5..4f6736d 100644 --- a/src/ExcelProvider.cs +++ b/src/ExcelProvider.cs @@ -363,6 +363,7 @@ public override string ValidateDestinationSettings() public override string ValidateSourceSettings() { + ExcelPackage.LicenseContext = LicenseContext.Commercial; if (SourceFile.EndsWith(".xlsx", StringComparison.OrdinalIgnoreCase) || SourceFile.EndsWith(".xls", StringComparison.OrdinalIgnoreCase) || SourceFile.EndsWith(".xlsm", StringComparison.OrdinalIgnoreCase)) diff --git a/src/ExcelReader.cs b/src/ExcelReader.cs index 42a5445..50d9538 100644 --- a/src/ExcelReader.cs +++ b/src/ExcelReader.cs @@ -34,6 +34,7 @@ public ExcelReader(string filename) private void LoadExcelFile() { + ExcelPackage.LicenseContext = LicenseContext.Commercial; var fileInfo = new FileInfo(Filename); using var package = new ExcelPackage(fileInfo); var ds = new DataSet(); @@ -42,9 +43,15 @@ private void LoadExcelFile() var emptyRows = new List(); var dataTable = new DataTable(worksheet.Name); var hasHeader = true; + int i = 0; foreach (var firstRowCell in worksheet.Cells[1, 1, 1, worksheet.Dimension.End.Column]) { - dataTable.Columns.Add(hasHeader ? firstRowCell.Text : string.Format("Column {0}", firstRowCell.Start.Column)); + var header = hasHeader ? firstRowCell.Text : string.Format("Column {0}", firstRowCell.Start.Column); + if (!dataTable.Columns.Contains(header) && !string.IsNullOrWhiteSpace(header)) + dataTable.Columns.Add(header); + else + dataTable.Columns.Add(header + i); + i++; } var startRow = hasHeader ? 2 : 1; @@ -53,12 +60,14 @@ private void LoadExcelFile() var hasValue = false; var wsRow = worksheet.Cells[rowNum, 1, rowNum, worksheet.Dimension.End.Column]; var row = dataTable.Rows.Add(); + var c = 0; foreach (var cell in wsRow) { - row[cell.Start.Column - 1] = cell.Text; + row[c] = cell.Text; if (!string.IsNullOrWhiteSpace(cell.Text)) hasValue = true; + c++; } if (!hasValue)