如何避免复选框列导出到Excel?

时间:2015-07-03 06:46:23

标签: c# winforms datagridview export-to-excel

{$IF Defined(MSWINDOWS) or Defined(MACOS)} 
// some code
{$ENDIF}

这是从datagridview导出所有数据,但我不想导出"日期"列和"复选框"柱 enter image description here

显示如下 enter image description here

1 个答案:

答案 0 :(得分:0)

您可以使用额外的计数器来获取正确的输出(而不仅仅是空列)。此外,您可以将“跳过”列的逻辑移动到函数。

int columnsCount = 0;

//export header
for (i = 1; i <= this.datagridview1.Columns.Count; i++)
{
    if (SkipColumn(this.datagridview1.Columns[i - 1]))
        continue;

    columnsCount++;     
    ExcelSheet.Cells[3, columnsCount] = this.datagridview1.Columns[columnsCount - 1].HeaderText;
}

//export data
for (i = 1; i <= this.datagridview1.RowCount; i++)
{
    columnsCount = 0;
    for (j = 1; j <= datagridview1.Columns.Count; j++)
    {
        if (SkipColumn(this.datagridview1.Columns[i - 1]))
            continue;

        columnsCount++;
        ExcelSheet.Cells[i + 3, columnsCount] = datagridview1.Rows[i - 1].Cells[columnsCount - 1].Value;
    }
}

// ...

private bool SkipColumn(DataGridViewColumn column)
{
    return column.GetType() == typeof(DataGridViewCheckBoxColumn)
        || column.Name == "Date";
}

您可以将任何逻辑添加到SkipColumn。使用DataGridViewColumn属性添加任何验证,条件。

了解DataGridViewColumn属性at MSDN