ClosedXML将列标题导出到excel[C#]

ClosedXML将列标题导出到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中是设计(

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

我使用以下命令将列从datagridview添加到datatable

            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;++;}