1

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

我使用从 datagridview 添加列到数据表

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

这使用 column.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++;
             }
4

1 回答 1

0

DataColumnCollection.Add(string columnName, Type type)从 MSDN及其示例中的外观来看,columnName用于设置新 DataColumn 的变量名称。这意味着您只能使用有效的变量名作为输入,这可以解释为什么空格和特殊字符不起作用。我想_Name, Address1,Zip_Code等会起作用。

另外,我无法从您的示例中看出,但我认为您可能误解了该type参数的用途。它用于设置所持有的变量类型DataColumn您不需要指定typeof(string),因为 a 的默认类型DataColumnstring

于 2015-01-07T19:10:45.860 回答