datagridview中的行数错误

时间:2018-01-05 14:15:00

标签: c# datagridview

在计算datagridview中的特定行时遇到问题。 我只计算其中一个单元格的复选框值为真的行。

守则是:

            int checkedRowCount = 0;

        SaveFileDialog sfd = new SaveFileDialog();
        sfd.Filter = "Excel files (*.xls)|*.xls";
        sfd.FilterIndex = 0;
        sfd.RestoreDirectory = true;

        if (sfd.ShowDialog() == DialogResult.OK)
        {
            if (sfd.FileName != "")
            {
                Excel.Application xlApp;
                Excel.Workbook xlWB;
                Excel.Worksheet xlWS;

                xlApp = new Excel.Application();
                xlWB = xlApp.Workbooks.Add(Type.Missing);
                xlWS = (Excel.Worksheet)xlWB.Worksheets.get_Item(1);

                xlApp.DisplayAlerts = false;

Parallel.ForEach(dataGridView1.Rows.Cast<DataGridViewRow>(), row =>
                {

                    DataGridViewCell cbCell = row.Cells[6];
                    if (!(cbCell.Value is DBNull))
                    {
                        if (Convert.ToBoolean(cbCell.Value) == true)
                        {
                            checkedRowCount++;

                            for (int i = 0; i < dataGridView1.Columns.Count - 1; i++)
                            {
                                xlWS.Cells[checkedRowCount, i + 1] = dataGridView1.Rows[row.Index].Cells[i].Value.ToString();
                            }
                        }
                    }
                });

                xlWB.SaveAs(sfd.FileName, Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                xlWB.Close(true, Type.Missing, Type.Missing);
                xlApp.Quit();

                Marshal.ReleaseComObject(xlWS);
                Marshal.ReleaseComObject(xlWB);
                Marshal.ReleaseComObject(xlApp);
            }
        }

我为当前行(而不是row.Index)使用不同行数的原因是因为我在excel文件中编写了已检查的行(在dgv中选中了复选框)。

输出是总行而不是当前行。

输出是:

15
15
15
15

它应该是:

1
2
3
...

我做了一个不同的项目,只是为了测试它和它的工作正常......

有什么建议吗?

最好的问候

1 个答案:

答案 0 :(得分:0)

从我的理解:

    id  name_x  name_y
0   104 molly   james
1   104 james   molly
2   104 sarah   adam
3   236 molly   adam
4   388 adam    sarah
5   388 johnny  pete
6   104 adam    sarah
7   236 adam    james
8   236 pete    johnny