Skip to content

Commit 494c56a

Browse files
committed
🪳 Fix TableName/TableStyle incorrect iteractions
1 parent 9d8ca21 commit 494c56a

2 files changed

Lines changed: 30 additions & 6 deletions

File tree

Source/PowerShell/Cmdlets/ExportCommand.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -294,8 +294,12 @@ private static void ApplyTableStyle(string workbookPath, string sheetName, strin
294294

295295
using XLWorkbook workbook = new XLWorkbook(workbookPath);
296296
IXLWorksheet worksheet = workbook.Worksheet(sheetName);
297+
tableName ??= string.Empty;
298+
299+
IXLTable? table = worksheet.TryGetTable(tableName ?? string.Empty, out IXLTable? matchedTable)
300+
? matchedTable
301+
: worksheet.Tables.FirstOrDefault();
297302

298-
IXLTable? table = tableName is not null ? worksheet.Table(tableName) : worksheet.Tables.FirstOrDefault();
299303
if (table is null)
300304
{
301305
IXLRange? usedRange = worksheet.RangeUsed();
@@ -309,7 +313,9 @@ private static void ApplyTableStyle(string workbookPath, string sheetName, strin
309313
worksheet.AutoFilter.Clear();
310314
}
311315

312-
table = usedRange.CreateTable();
316+
table = !string.IsNullOrWhiteSpace(tableName)
317+
? usedRange.CreateTable(tableName)
318+
: usedRange.CreateTable();
313319
}
314320

315321
if (!string.IsNullOrWhiteSpace(tableStyle))
@@ -326,10 +332,6 @@ private static void ApplyTableStyle(string workbookPath, string sheetName, strin
326332
table.Theme = parsedTheme;
327333
}
328334

329-
if (!string.IsNullOrWhiteSpace(tableName))
330-
{
331-
table.Name = tableName;
332-
}
333335

334336
workbook.Save();
335337
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
namespace ExcelFast.Extensions;
2+
3+
using ClosedXML.Excel;
4+
5+
public static class WorksheetExtensions
6+
{
7+
extension(IXLWorksheet worksheet)
8+
{
9+
public bool TryGetTable(string tableName, out IXLTable? table)
10+
{
11+
table = null;
12+
13+
if (string.IsNullOrWhiteSpace(tableName)) return false;
14+
15+
table = worksheet.Tables.FirstOrDefault(candidate =>
16+
string.Equals(candidate.Name, tableName, StringComparison.OrdinalIgnoreCase)
17+
);
18+
19+
return table is not null;
20+
}
21+
}
22+
}

0 commit comments

Comments
 (0)