DataGridView 反向到 Excel.有答案
本文关键字:答案 Excel DataGridView | 更新日期: 2023-09-27 18:37:24
我有一个填充我的 excel 工作表的数据网格视图。它工作正常,但我需要反转它,因为它在数据网格视图中显示:A B C,这是我想要的,但是当我将其发送到 excel 时,它会显示:C B A
我发现了其他有相同问题的帖子,并使用了我的代码中提供的答案。我得到了一个nullreferenceexception
但我的所有行都有一个值。可能是我在数据网格视图底部拾取空白行吗?
for (int i = dataGridView1.Rows.Count-1; i >= 0; i--)
{
DataGridViewRow row = dataGridView1.Rows[i];
DataRow myRow = (row.DataBoundItem as DataRowView).Row;
DatasetRead( FlagWhich, myRow, XLRowPos );
XLRowPos++;
}
这就是我的问题所在:row.DataBoundItem
行具有正确的值,但数据绑定项为空。从我在其他数据网格视图/excel帖子中找到的内容来看,这是由于空行必须是最后一行。我已经试过Rows.Count - 1
但它不起作用
这是我向前阅读的代码:
foreach (DataGridViewRow row in rows)
{
DataRow myRow = (row.DataBoundItem as DataRowView).Row;
DatasetRead( FlagWhich, myRow, XLRowPos );
XLRowPos++;
}
这有效,但我需要相反。
======下面的答案======
这对我有用:
foreach (DataGridViewRow row in lst.AsEnumerable( ).Reverse( ))
{
for (int i = 0; i < row.Cells.Count; i++)
{
excelSheet.Cells[XLRowPos, i + 1] = row.Cells[i].Value.ToString( );
}
XLRowPos++;
}
foreach (var dataRow in dataGridView1.Rows.Reverse())
{
DataRow myRow = (dataRow.DataBoundItem as DataRowView).Row;
DatasetRead( FlagWhich, myRow, XLRowPos );
XLRowPos++;
}