2012-10-17 77 views
0

當我運行我的代碼時,我總是收到'Exception from HRESULT:0x800A03EC'錯誤。有些論壇認爲'1'需要更改爲'0',反之亦然。 在這一點上,我只是不知道什麼是錯的,沒有什麼是突出的。我相信我已經加載了所有我需要的參考資料,所以任何建議/幫助都會很感激。VB導出listview到Excel

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 
    Dim objExcel As New Excel.Application 
    Dim bkWorkBook As Workbook 
    Dim shWorkSheet As Worksheet 
    Dim i As Integer 
    Dim j As Integer 

    objExcel = New Excel.Application 
    bkWorkBook = objExcel.Workbooks.Add 
    shWorkSheet = bkWorkBook.ActiveSheet 
    For i = 0 To Me.ListView1.Columns.Count 
     shWorkSheet.Cells(1, Chr(64 + i)) = Me.ListView1.Columns(i) 
    Next 
    For i = 1 To Me.ListView1.Items.Count 
     shWorkSheet.Cells(i + 2, "A") = Me.ListView1.Items(i).Text 
     For j = 2 To Me.ListView1.Items.Count 
      shWorkSheet.Cells(i + 2, Chr(64 + j)) = Me.ListView1.Items(i).SubItems(j - 1) 
     Next 
    Next 

    objExcel.Visible = True 
End Sub 

謝謝,

回答

0

我重新測試,發現我還沒有完全測試一個列表視圖比幾個列更多。試試這個:

Try 
     Dim objExcel As New Excel.Application 
     Dim bkWorkBook As Workbook 
     Dim shWorkSheet As Worksheet 
     Dim i As Integer 
     Dim j As Integer 

     objExcel = New Excel.Application 
     bkWorkBook = objExcel.Workbooks.Add 
     shWorkSheet = CType(bkWorkBook.ActiveSheet, Worksheet) 
     For i = 0 To Me.ListView1.Columns.Count - 1 
      shWorkSheet.Cells(1, i + 1) = Me.ListView1.Columns(i).Text 
     Next 
     For i = 0 To Me.ListView1.Items.Count - 1 
      For j = 0 To Me.ListView1.Items(i).SubItems.Count - 1 
       shWorkSheet.Cells(i + 2, j + 1) = Me.ListView1.Items(i).SubItems(j).Text 
      Next 
     Next 

     objExcel.Visible = True 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 
+0

感謝您的回覆。我也嘗試了你的方法,但是我仍然得到一個錯誤:'ArgumentOutOfRangeException was unhandled'; InvalidArgument ='1'的值對'index'無效。您提供的第七行代碼。有什麼想法嗎? – cheapkid1

+0

@ cheapkid1 - 代碼已更新 – UnhandledExcepSean

+0

謝謝,這很完美!我不得不把catch ex作爲例外和msgbox部分。我真的需要那個部分嗎? – cheapkid1

1
shWorkSheet.Cells(1, Chr(64 + i)) 

應該是

shWorkSheet.Cells(1, i) 

細胞預計的一個或兩個數字參數。

+0

這是問題的一部分。 – UnhandledExcepSean

+0

@ Tim:謝謝你的迴應。當我嘗試這個解決方案時,我得到一個COMException異常。這是否意味着我錯過了COM參考? – cheapkid1

+0

列索引是基於1的,所以我應該從1 –

-1

這是一個解決方案,如果你想用彩色導出你的listview到Excel。請根據您的ListViews行和列索引正確定位索引!

Try 
    Dim objExcel As New Excel.Application 
    Dim bkWorkBook As Excel.Workbook 
    Dim shWorkSheet As Excel.Worksheet 
    Dim i As Integer 
    Dim j As Integer 

    objExcel = New Excel.Application 
    bkWorkBook = objExcel.Workbooks.Add 
    shWorkSheet = CType(bkWorkBook.ActiveSheet, Excel.Worksheet) 
    For i = 0 To objLv.Columns.Count - 1 
     shWorkSheet.Cells(1, i + 1) = objLv.Columns(i).Text 
    Next 

    For i = 0 To objLv.Items.Count - 1 
     Dim clr = ColorTranslator.ToOle(objLv.Items(i - 1).BackColor) 
     shWorkSheet.Rows(i).Interior.Color = clr 
     For j = 2 To objLv.Columns.Count 
       shWorkSheet.Cells(i + 1, j - 1).Value = objLv.Items(i - 1).SubItems(j - 1).Text 
     Next 
    Next 

    objExcel.Visible = True 
Catch ex As Exception 
    MsgBox(ex.Message) 
End Try