【问题标题】:ClosedXML export column header to excel [C#]ClosedXML 将列标题导出到 excel [C#]
【发布时间】:2015-01-07 00:32:50
【问题描述】:

我有一个使用 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++;
             }

【问题讨论】:

    标签: c# excel datagridview export closedxml


    【解决方案1】:

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

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

    【讨论】:

    • 那个 typeof(string) 只是一个镜头..我现在明白了.. 我不知道我是否很好地解释了这种情况。我的代码将列标题添加到 Excel。但是导出行被破坏了。它只导出没有特殊字符或空格的“下”列的值。这是我将行写入 excel 的函数: foreach (int columnindex in columnsList) { worksheet.Cell(1, col_).Value = dt.Columns[columnindex].ToString(); col_++; }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多