ClosedXML导出列标题为excel [C#]

时间:2015-01-07 00:32:50

标签: c# excel datagridview export closedxml

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

我使用

将datagridview中的列添加到datatable中
            foreach (DataGridViewColumn column in dgvLoadAll.Columns)
            {
                dt.Columns.Add(column.Name);
            }

这使用了我的dgv中的column.Name,它是Design(Name)。我想添加column.HeaderText。当我使用

            dt.Columns.Add(column.HeaderText, typeof(string));

它成功添加列标题,但导出无法正常工作。它只导出没有特殊字符甚至是空白字符的列。 (“名称”列已导出,但“IUPAC名称”或“Čas”不是,...)。重命名不是一种选择。

以下是负责编写单元格的导出函数的一部分。只是提醒:当我使用column.Name时,它可以正常工作。

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

1 个答案:

答案 0 :(得分:0)

从MSDN上的DataColumnCollection.Add(string columnName, Type type)及其examples开始,columnName用于设置新DataColumn的变量名称。这意味着您只能将有效的变量名称作为输入,这可以解释为什么空格和特殊字符不起作用。我认为_NameAddress1Zip_Code等会起作用。

另外,我无法从你的例子中说出来,但我认为你可能会误解type参数的含义。用于设置DataColumn成立的变量类型。您无需指定typeof(string),因为DataColumn的默认类型为string