在Excel工作表中显示listview项目

时间:2016-01-21 12:08:08

标签: wpf excel vba listview for-loop

我在WPF应用程序的excel中显示SQL搜索的结果。它最初在列表视图中显示它们,用户可以选择导出到excel的选项,它正常工作。

我遇到的错误是,如果SQL结果中有5个结果并显示在listview中,当我导出到excel时,它只显示4个结果加上SQL表标题......

For i As Integer = 1 To dtMainSQLData.Rows.Count

            For j As Integer = 1 To dtMainSQLData.Columns.Count

                If i = 1 Then

                    sheet.Cells(i, j) = dcCollection(j - 1).ToString()

                Else

                    sheet.Cells(i, j) = dtMainSQLData.Rows(i - 1)(j - 1).ToString()

                End If

            Next

        Next

有没有人发现将用于打印出SQL结果的约束循环出现问题

2 个答案:

答案 0 :(得分:0)

这是你的问题:

For i As Integer = 1 To dtMainSQLData.Rows.Count

如果您跳过第一个并且在访问商品时将其减少1,则必须前往dtMainSQLData.Rows.Count + 1

就我个人而言,我会从0开始:

For i As Integer = 0 To dtMainSQLData.Rows.Count
    For j As Integer = 0 To dtMainSQLData.Columns.Count
        If i = 0 Then
            sheet.Cells(i + 1, j + 1) = dcCollection(j).ToString()
        Else
            sheet.Cells(i + 1, j + 1) = dtMainSQLData.Rows(i)(j).ToString()
        End If
    Next
Next

答案 1 :(得分:0)

在调试csharpwinphonexaml的答案后,我得到了它的工作。我必须添加一个额外的IF来检查它是否在最后一个位置。

For i As Integer = 0 To dtMainSQLData.Rows.Count
            For j As Integer = 0 To dtMainSQLData.Columns.Count - 1
                If i = 0 Then
                    sheet.Cells(i + 1, j + 1) = dtMainSQLData.Columns(j).ToString()
                ElseIf i = dtMainSQLData.Rows.Count Then
                    sheet.Cells(i + 1, j + 1) = dtMainSQLData.Rows(0)(j).ToString()
                Else
                    sheet.Cells(i + 1, j + 1) = dtMainSQLData.Rows(i)(j).ToString()
                End If
            Next
        Next