【问题标题】:Importing a spreadsheet, but having trouble导入电子表格,但遇到问题
【发布时间】:2010-04-09 19:31:27
【问题描述】:

我有一个允许用户导入电子表格的表单。当涉及到列标题时,此电子表格通常是静态的,但现在用户希望能够包含一个可选列(称为注释)。当我尝试从电子表格中读取不存在的列时,我的代码会崩溃。

        Dim objCommand As New OleDbCommand()
        objCommand = ExcelConnection() 'function that opens spreadsheet and returns objCommand

        Dim reader As OleDbDataReader
        reader = objCommand.ExecuteReader()

        While reader.Read()
            Dim Employee As String = Convert.ToString(reader("User"))
            Dim SerialNUM As String = Convert.ToString(reader("serialno"))
            **Dim Notes As String = Convert.ToString(reader("notes"))**

如果电子表格包含备注列,则一切正常。如果没有,就崩溃。如何检查电子表格中是否存在 Notes 列以避免崩溃?

【问题讨论】:

    标签: asp.net vb.net excel


    【解决方案1】:

    将代码更改为如下内容: [编辑 - 更改代码逻辑)

    Dim fieldCount = reader.FieldCount 
    For i = 0 To fieldCount - 1
    Dim colName = reader.GetName(i)
    If (colName = "notes") Then
        Dim Notes As String = reader.GetString(i)
    End If
    Next i
    

    【讨论】:

    • 感谢两位的回答。如果该列不存在,GetOrdinal("Notes") 仍然会引发错误,但 reader.GetName(4) = "Notes" 有效..只要客户确保 Notes 列位于正确的位置。跨度>
    • @Chris,我改变了我的例子的逻辑。这样,您可以迭代列,并检查它们是否与您想要的匹配,而不是假设该列存在。
    【解决方案2】:

    也许 OleDbDataReader.FieldCount 可以帮助您编写解决方法。

    【讨论】:

    • 你们两个都让我找到了正确的方向......谢谢!
    猜你喜欢
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    相关资源
    最近更新 更多