重命名表ClosedXML的标题

时间:2014-10-13 10:51:17

标签: c# excel closedxml

我正在创建一个包含工作表和表格的工作簿。之后我想更改每列标题的标题。我已经尝试了不同的方法,但是当我打开xmls文件时,excel会显示一条错误消息(按下修复文件后会打开)。也许有人可以暗示一下。这是一个示例,我生成2个文件,一个打开,另一个有问题。我使用的是最新版本的lib:

public class Test
{
    public string Test1 { get; set; }
    public string Test2 { get; set; }
}

public void MyTest()
{
    List<Test> testList = new List<Test>
    {
        new Test{Test1 = "T1",Test2 = "T2"},
        new Test{Test1 = "T1",Test2 = "T2"}
    };

    var wb1 = new XLWorkbook();
    var ws = wb1.Worksheets.Add("Mysheet");
    ws.Cell(1, 1).InsertTable(testList);
    wb1.SaveAs(@"C:\Test\Test1.xlsx");

    var wb2 = new XLWorkbook();
    var ws2 = wb2.Worksheets.Add("Mysheet");
    var tb2 = ws2.Cell(1, 1).InsertTable(testList);
    const string newHeader = "TestNew";
    for (int i = 0; i < tb2.Fields.Count(); i++)
    {
        tb2.Field(i).Name = string.Format(
            "{0} {1}", 
            newHeader, 
            i
            );
    }
    wb2.SaveAs(@"C:\Test\Test2.xlsx");
}

2 个答案:

答案 0 :(得分:2)

ClosedXML中似乎存在错误。当您更改Field(...).Name时,它仅更改带有列标题的单元格的显示值,而不更改实际表格代码中的字段名称。 (您可以打开Test2.xlsx作为zip文件来查看xl\worksheets\sheet.xmlxl\tables\table.xml

Here是对该错误的讨论。 ClosedXML的作者声称它已修复,但我使用最新版本进行了测试,但仍然存在错误。

你应该在那里发帖并与作者澄清。

答案 1 :(得分:0)

我已与他们联系,似乎他们在源代码中修复了这个错误,但在发布中没有。非常感谢您对这个问题的兴趣。