2016-01-21 147 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