ClosedXML将列标题导出到excel[C#]
我有一个使用CloedXML将datagridview导出到excel的函数。一切正常,但: 我使用以下命令将列从datagridview添加到datatableClosedXML将列标题导出到excel[C#],c#,excel,datagridview,export,closedxml,C#,Excel,Datagridview,Export,Closedxml,我有一个使用CloedXML将datagridview导出到excel的函数。一切正常,但: 我使用以下命令将列从datagridview添加到datatable foreach (DataGridViewColumn column in dgvLoadAll.Columns) { dt.Columns.Add(column.Name); } 这将使用.Name列,该列在我的dgv中是设计(
foreach (DataGridViewColumn column in dgvLoadAll.Columns)
{
dt.Columns.Add(column.Name);
}
这将使用.Name列,该列在我的dgv中是设计(名称)。我想添加column.HeaderText。当我使用
dt.Columns.Add(column.HeaderText, typeof(string));
它成功地添加了列标题,但导出无法正常工作。它只导出没有特殊字符甚至没有空白字符的列。(“名称”列已导出,但“IUPAC名称”或“Čas”未导出,…)。重命名不是一个选项
下面是导出函数中负责写入单元格的部分。提醒一下:当我使用column.Name时,它100%正常工作
foreach (int rowindex in rowsselected)
{
foreach (int columnindex in columnsList)
{
worksheet.Cell(k+2, j+1).Value = dt.Rows[rowindex] [columnindex].ToString();
j++;
}
j = 0;
k++;
}
从MSDN for和中的外观来看,
columnName
用于设置新数据列的变量名。这意味着您只能使用有效的变量名作为输入,这就解释了为什么空格和特殊字符不起作用。我可以想象,\u Name
、Address1
、Zip\u code
等都可以工作
另外,我无法从您的示例中看出,但我认为您可能误解了类型
参数的用途。用于设置DataColumn
保存的变量类型。您不需要指定typeof(string)
,因为DataColumn
的默认类型是string
该类型(string)只是一个快照..我现在就知道了。。我不知道我是否解释得很好。我的代码将列标题添加到excel。但导出行是不正确的。它只导出“under”列中的值,没有特殊的字符或空格。这是我将行写入excel的函数:foreach(columnsList中的int columnindex){sheet.Cell(1,col_u2;).Value=dt.Columns[columnindex].ToString();col_2;++;}