C# 如何避免将复选框列导出到excel? //导出头 对于(i=1;i

C# 如何避免将复选框列导出到excel? //导出头 对于(i=1;i,c#,winforms,datagridview,export-to-excel,C#,Winforms,Datagridview,Export To Excel,您可以对列使用额外的计数器以获得正确的输出(不仅仅是空列)。此外,您还可以将“跳过”列的逻辑移动到函数 //export header for (i = 1; i <= this.datagridview1.Columns.Count; i++) { ExcelSheet.Cells[3, i] = this.datagridview1.Columns[i - 1].HeaderText; } //export data for (i = 1; i <= this.data

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

//export header
for (i = 1; i <= this.datagridview1.Columns.Count; i++)
{
    ExcelSheet.Cells[3, i] = this.datagridview1.Columns[i - 1].HeaderText;
}

//export data
for (i = 1; i <= this.datagridview1.RowCount; i++)
{
    for (j = 1; j <= datagridview1.Columns.Count; j++)
    {

        ExcelSheet.Cells[i + 3, j] = datagridview1.Rows[i - 1].Cells[j - 1].Value;
    }
}
int columnsCount=0;
//导出标题
对于(i=1;i
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";
}