diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Tables/IXLTableField.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Tables/IXLTableField.cs index 1adc144..5898961 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Tables/IXLTableField.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Tables/IXLTableField.cs @@ -18,7 +18,7 @@ public interface IXLTableField { - Int32 Index { get; set; } + Int32 Index { get; } String Name { get; set; } String TotalsRowLabel { get; set; } String TotalsRowFormulaA1 { get; set; } diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Tables/XLTableField.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Tables/XLTableField.cs index 7d9b9d9..0f98646 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Tables/XLTableField.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Tables/XLTableField.cs @@ -10,8 +10,19 @@ this.table = table; } - public Int32 Index { get; set; } - public String Name { get; set; } + public Int32 Index { get; internal set; } + + public String Name + { + get + { + return table.HeadersRow().Cell(Index + 1).GetString(); + } + set + { + table.HeadersRow().Cell(Index + 1).SetValue(value); + } + } internal String totalsRowLabel; public String TotalsRowLabel diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs index 8b447b2..c752057 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorksheet.cs @@ -609,10 +609,12 @@ Int32 fieldCount = t.ColumnCount(); for (Int32 f = 0; f < fieldCount; f++) { - table.Field(f).Index = t.Field(f).Index; - table.Field(f).Name = t.Field(f).Name; - (table.Field(f) as XLTableField).totalsRowLabel = (t.Field(f) as XLTableField).totalsRowLabel; - (table.Field(f) as XLTableField).totalsRowFunction = (t.Field(f) as XLTableField).totalsRowFunction; + var tableField = table.Field(f) as XLTableField; + var tField = t.Field(f) as XLTableField; + tableField.Index = tField.Index; + tableField.Name = tField.Name; + tableField.totalsRowLabel = tField.totalsRowLabel; + tableField.totalsRowFunction = tField.totalsRowFunction; } } diff --git a/ClosedXML/ClosedXML/ClosedXML_Sandbox/Program.cs b/ClosedXML/ClosedXML/ClosedXML_Sandbox/Program.cs index 8024764..4a92057 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Sandbox/Program.cs +++ b/ClosedXML/ClosedXML/ClosedXML_Sandbox/Program.cs @@ -15,7 +15,20 @@ static void Main(string[] args) { - XLWorkbook wb = new XLWorkbook(@"c:\temp\test.xlsx"); + + XLWorkbook wb = new XLWorkbook(); //( @"c:\temp\test.xlsx"); + + var ws = wb.AddWorksheet("Sheet"); + ws.Cell("A1").SetValue("FName") + .CellBelow().SetValue("John"); + + ws.Cell("B1").SetValue("LName") + .CellBelow().SetValue("Doe"); + + var tbl = ws.RangeUsed().CreateTable(); + var nameBefore = tbl.Field(tbl.Fields.Last().Index).Name; + tbl.Field(tbl.Fields.Last().Index).Name = "LastName"; + var nameAfter = tbl.Field(tbl.Fields.Last().Index).Name; var start = DateTime.Now; wb.SaveAs(@"c:\temp\saved.xlsx"); var end = DateTime.Now; diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/Tables/TablesTests.cs b/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/Tables/TablesTests.cs index 62c6900..8bd1f63 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/Tables/TablesTests.cs +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/Tables/TablesTests.cs @@ -308,5 +308,29 @@ Assert.AreEqual("A", table.DataRange.FirstCell().GetString()); Assert.AreEqual("C", table.DataRange.LastCell().GetString()); } + + [Test] + public void ChangeFieldName() + { + XLWorkbook wb = new XLWorkbook(); //( @"c:\temp\test.xlsx"); + + var ws = wb.AddWorksheet("Sheet"); + ws.Cell("A1").SetValue("FName") + .CellBelow().SetValue("John"); + + ws.Cell("B1").SetValue("LName") + .CellBelow().SetValue("Doe"); + + var tbl = ws.RangeUsed().CreateTable(); + var nameBefore = tbl.Field(tbl.Fields.Last().Index).Name; + tbl.Field(tbl.Fields.Last().Index).Name = "LastName"; + var nameAfter = tbl.Field(tbl.Fields.Last().Index).Name; + + var cellValue = ws.Cell("B1").GetString(); + + Assert.AreEqual("LName", nameBefore); + Assert.AreEqual("LastName", nameAfter); + Assert.AreEqual("LastName", cellValue); + } } } \ No newline at end of file