我正在使用ClosedXML创建包含一些数据的xlsx文件。在Excel工作表中,我有一个包含数据的表。在表的列(不是表的列)中,我想指定数据类型。
/* This datatable is created and populated somewhere else in my program*/
Datatable dt = new Datatable();
ws.Cell(t.Position.Row, t.Position.Column).InsertTable(dt);
IXLTables allTables = ws.Tables;
var table = allTables.ElementAt(i);
int j = 1;
/* The options object hold the excel datatypes for each column*/
foreach (var c in option.Tables.ElementAt(i).Columns)
{
table.Column(j).DataType = c.Type;
j++;
}
i++;
在一个选项对象的foreach循环中找到并添加了数据类型,这在我的程序中如何工作可能并不重要。
问题在于,当我向表中的列添加数据类型时,它包含表的标题。由于标题是“文本”,我可能指定的值是数字我得到一个错误。任何人都知道如何使它忽略表的标题,只需将数据类型添加到下面的列?
提前致谢。
答案 0 :(得分:0)
由于设置数据类型可以在Excel中以每列为基础工作,因此期望从ClosedXml中获取相同数据类型并不合理。正如你发现它不能那样工作。我这样做的方法是定义一个范围,选择除标题之外的整个列。我没有按照你的方式使用表格,但下面的代码片段应该给你一个方向。
IXLWorksheet sheet = wb.Worksheets.Add("Sheet1");
sheet.Cell(1, 1).InsertTable(dt);
foreach (var column in sheet.ColumnsUsed())
{
string columnLetter = column.ColumnLetter();
string rng = $"${columnLetter}2:columnLetter}sheet.RangeUsed().RowCount()}";
sheet.Range(rng).DataType = some data type;
}