我有一个使用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++;
}
答案 0 :(得分:0)
从MSDN上的DataColumnCollection.Add(string columnName, Type type)
及其examples开始,columnName
用于设置新DataColumn的变量名称。这意味着您只能将有效的变量名称作为输入,这可以解释为什么空格和特殊字符不起作用。我认为_Name
,Address1
,Zip_Code
等会起作用。
另外,我无法从你的例子中说出来,但我认为你可能会误解type
参数的含义。用于设置DataColumn
成立的变量类型。您无需指定typeof(string)
,因为DataColumn
的默认类型为string
。