VS2010 - 列表框显示" system._comobject"而不是价值观

时间:2017-11-03 13:47:14

标签: vb.net winforms excel-interop

{{1}}

我勾选了表单上的复选框(checkbox2),然后列出了listbox1。我在"修订日期"中输入了一个日期列表。工作表,从A3开始。我希望我的代码读取该列并将这些值传输到列表框。 我运行代码时没有收到任何错误,但是我的表单上的列表框没有显示日期(例如01/01/2018),而是" system._comobject"

有什么建议吗?

谢谢。

2 个答案:

答案 0 :(得分:3)

ListBox1.Items.Add(xlWorkSheet.Cells(i, 1))

这是添加Range成员调用返回的Cells对象。如果你想添加单元格的Value,那么你需要明确它,因为我不认为.net interop尊重默认/隐式成员调用VB6 / VBA / COM的方式。

ListBox1.Items.Add(xlWorkSheet.Cells(i, 1).Value)

答案 1 :(得分:0)

使用CType将对象转换为excel对象。

Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged
    Dim xlApp As Excel.Application
    Dim xlWorkBook As Excel.Workbook
    Dim xlWorkSheet As Excel.Worksheet
    Dim i As Integer = 3
    xlApp = New Excel.Application
    xlWorkBook = xlApp.Workbooks.Open("C:\Users\JDoe\Documents\Ben's Project\Food.xlsx")
    xlWorkSheet = xlWorkBook.Worksheets("Revision Dates")
    If CheckBox2.Checked = True Then
        Panel2.Show()
        CheckBox1.Enabled = False
        ListBox1.Show()
        Label3.Show()
        'istBox1.Items.Add(xlWorkSheet.Range("A1", "A14").Value)
        Do

            ListBox1.Items.Add(CType(xlWorkSheet.Cells(i, 1), excel.Range).Value))
            i += 1
        Loop Until CType(xlWorkSheet.Cells(i, 1), excel.Range).Value) = "01/01/01"
    Else
        Panel2.Hide()
        ListBox1.Hide()
        Label3.Hide()
        CheckBox1.Enabled = True
    End If
End Sub