Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 查询excel时出现奇怪错误_Vb.net_Excel - Fatal编程技术网

Vb.net 查询excel时出现奇怪错误

Vb.net 查询excel时出现奇怪错误,vb.net,excel,Vb.net,Excel,我正在vb.net中制作一个应用程序,用于连接Excel文件并对其进行编辑 在尝试修改Excel文件时,出现以下错误: 具有此功能 Protected Friend Function obtenerHojaActual(ByVal columna As String, ByVal con As String) As String Dim cmd As String Dim WorkSheet As String = "" Try libro = app.W

我正在vb.net中制作一个应用程序,用于连接Excel文件并对其进行编辑

在尝试修改Excel文件时,出现以下错误:

具有此功能

Protected Friend Function obtenerHojaActual(ByVal columna As String, ByVal con As String) As String
    Dim cmd As String
    Dim WorkSheet As String = ""
    Try
        libro = app.Workbooks.Open(con)
        For Each hoja As Microsoft.Office.Interop.Excel.Worksheet In libro.Worksheets
            cmd = "SELECT [" & columna & "] FROM [" & hoja.Name & "$]"
            Dim adapter As New OleDbDataAdapter(cmd, conexion)
            Dim tabla As New DataTable
            adapter.Fill(tabla)
            adapter.Dispose()
            //Code
            //Code
            //Code
            tabla.Dispose()
        Next
        libro.Close()
        app.Quit()
        Return WorkSheet
    Catch ex As Exception
        repairmanMessage("Error inesperado", ex.Message, My.Resources._error).ShowDialog()
        principal.lbldireccion.ForeColor = Color.Red
        Return WorkSheet
    End Try
End Function
得到这个:

“没有指定的值​​对于所需的某些参数”

因此:

Protected Friend Function obtenerErrores(ByVal columna As String, ByVal hoja As String, ByVal tipo As String) As Integer
    Dim cmd As String = "SELECT [" & columna & "] FROM [" & hoja & "$]"
    Dim errores As Integer = 0
    Dim fecha As Date
    Dim tabla As New DataTable
    Try
        Dim adapter As New OleDbDataAdapter(cmd, conexion)
        adapter.Fill(tabla)
        adapter.Dispose()
        //Code
        //Code
        //Code
        tabla.Dispose()
        Return errores
    Catch ex As Exception
        repairmanMessage("Error inesperado", ex.Message, My.Resources._error).ShowDialog()
        principal.lbldireccion.ForeColor = Color.Red
        Return errores
    End Try
获取此错误

我尝试过使用参数化查询,但看起来excel不能很好地处理这件事(或者,我不知道excel使用的查询语法)

最奇怪的是,在代码的其他部分,不要给我错误,程序只是在我试图修改文件时抛出错误,然后 虽然我遇到了这两个错误,excel工作表还是按照我的要求进行了修改


可能是什么?

好的,我坐下来检查了一切,我不得不想一想发生了什么。我发现我的代码没有任何错误(这就是为什么即使程序给了我错误,文件还是被修改了)。。。我也发现了这一点,让我用一个Excel文件示例来解释:

我在连接字符串中使用HDR属性(“HDR=Yes;”表示第一行包含列名,而不是数据。“HDR=No;”表示相反的内容。)如您所见,我已经定义了4列(名称、姓氏、日期、年龄……不多!)

我们现在使用此示例文件运行程序,并仔细查看发生了什么:

正如我们在第一张图片中看到的,我从未在该位置创建过列('F1')。。。很明显,有时你在没有意识到的情况下创建了我在Excel中称之为“幻影列”的列。我把它想象成列的第一个单元格没有写任何东西,程序会根据它们的位置自动给它命名(“F1”是幽灵列)

为了解决这个问题,在进行查询时,首先检查参数“column”是否为空

 Protected Friend Function obtenerHojaActual(ByVal columna As String, ByVal con As String) As String
    If (Not String.IsNullOrEmpty(columna)) Then
        //Blah blah
        //Blah blah
        //Blah blah
    End If
    Return "Desconocida"
End Function
我们走了


好的,我坐下来检查了一切,我不得不想一想发生了什么。我发现我的代码没有任何错误(这就是为什么即使程序给了我错误,文件还是被修改了)。。。我也发现了这一点,让我用一个Excel文件示例来解释:

我在连接字符串中使用HDR属性(“HDR=Yes;”表示第一行包含列名,而不是数据。“HDR=No;”表示相反的内容。)如您所见,我已经定义了4列(名称、姓氏、日期、年龄……不多!)

我们现在使用此示例文件运行程序,并仔细查看发生了什么:

正如我们在第一张图片中看到的,我从未在该位置创建过列('F1')。。。很明显,有时你在没有意识到的情况下创建了我在Excel中称之为“幻影列”的列。我把它想象成列的第一个单元格没有写任何东西,程序会根据它们的位置自动给它命名(“F1”是幽灵列)

为了解决这个问题,在进行查询时,首先检查参数“column”是否为空

 Protected Friend Function obtenerHojaActual(ByVal columna As String, ByVal con As String) As String
    If (Not String.IsNullOrEmpty(columna)) Then
        //Blah blah
        //Blah blah
        //Blah blah
    End If
    Return "Desconocida"
End Function
我们走了


您的
异常
对象中是否有
内部异常
?这些通常会告诉您缺少什么参数。不。。。让我添加它,看看我插入了你告诉我的内容,并给我打印了一个空白的msgbox…Messagebox不是调试的好方法。尝试检查异常本身。对于“$不是有效名称”错误,当发生此错误时,
hoja
是否有可能是空字符串?您的
异常
对象中是否有
InnerException
?这些通常会告诉您缺少什么参数。不。。。让我添加它,看看我插入了你告诉我的内容,并给我打印了一个空白的msgbox…Messagebox不是调试的好方法。尝试检查异常本身。对于“$不是有效名称”错误,发生此错误时,
hoja
是否有可能是空字符串?