我正在创建一个包含工作表和表格的工作簿。之后我想更改每列标题的标题。我已经尝试了不同的方法,但是当我打开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");
}
答案 0 :(得分:2)
ClosedXML中似乎存在错误。当您更改Field(...).Name
时,它仅更改带有列标题的单元格的显示值,而不更改实际表格代码中的字段名称。 (您可以打开Test2.xlsx
作为zip文件来查看xl\worksheets\sheet.xml
和xl\tables\table.xml
。
Here是对该错误的讨论。 ClosedXML的作者声称它已修复,但我使用最新版本进行了测试,但仍然存在错误。
你应该在那里发帖并与作者澄清。
答案 1 :(得分:0)
我已与他们联系,似乎他们在源代码中修复了这个错误,但在发布中没有。非常感谢您对这个问题的兴趣。