2

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

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

2 回答 2

2

ClosedXML 中似乎有一个错误。当您更改Field(...).Name它时,它只会更改带有列标题的单元格的显示值,而不是实际表代码中的字段名称。(您可以通过打开Test2.xlsx一个 zip 文件并查看xl\worksheets\sheet.xml和来检查xl\tables\table.xml。)

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

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

于 2014-10-14T08:32:21.527 回答
0

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

于 2014-10-22T08:44:55.260 回答