2016-01-21 148 views
0

我在一个WPF应用程序的excel中显示我的搜索结果。它首先在一个列表视图中显示它们,用户可以选择导出到excel的选项,这个工作正常。在excel表格中显示listview项目

我有错误,如果有说5所导致SQL结果,并在列表视图中显示,当我导出到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

回答

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 
+0

获取错误说现在找不到栏19,有什么想法吗?猜测它是因为它已经到达最后一列(18)并且加1导致没有找到19? –

+0

发生异常的地方在哪里? – csharpwinphonexaml

+0

如果我= 0那么...当它击中最后一列错误抛出 –

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