Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 在excel工作表中显示listview项_Wpf_Excel_Vba_Listview_For Loop - Fatal编程技术网

Wpf 在excel工作表中显示listview项

Wpf 在excel工作表中显示listview项,wpf,excel,vba,listview,for-loop,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

我正在显示来自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结果打印到excel的about循环有问题这是您的问题:

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

在调试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

获取错误消息说现在找不到第19列,知道吗?猜测它是因为它已到达最后一列(18)并添加1导致找不到19?异常发生在哪里?如果i=0,则。。。当它到达最后一列时,错误是thrown有19列,因此请放置一个断点并检查dtMainSQLData.columns.Count的值。您可能有20列,但最后一列是null或空的,我不知道。