ClosedXML导出列标题为Excel

我有一个函数来导出datagridview使用CloedXML excel。 一切正常,但:

我从datagridview添加列到datatable使用

foreach (DataGridViewColumn column in dgvLoadAll.Columns) { dt.Columns.Add(column.Name); } 

这使用column.Name这是我的dgvdevise(名称)。 我想添加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上的DataColumnCollection.Add(string columnName, Type type)和它们的示例中 ,它的外观如下: columnName用于设置新DataColumn的variables名称 。 这意味着您仅限于有效的variables名称作为input,这将解释为什么空格和特殊字符不起作用。 我会想象Zip_CodeZip_CodeZip_Code等将工作。

另外,我不能从你的例子中知道,但我想你可能会误解type参数是什么。 用于设置DataColumn保存的variablestypes 。 您不需要指定typeof(string)因为DataColumn的默认types是string