如何关闭使用Oledb.oledbconnection打开的Excel工作表

时间:2018-10-10 12:53:54

标签: vb.net

我有一个用VB.NET编写的程序,在其中打开Excel工作簿以读取要插入到SQL Server数据库中的数据。我做一会儿rs.read并设置要插入数据库的变量。我的问题是(当我完成将数据加载到数据库中时)我尝试了几种方法来关闭Excel工作表,但它仍然保持打开状态。

代码如下:

Using myExcel As New System.Data.OleDb.OleDbConnection("provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & ImportDirectory & ImportFile & ImportFileExtension & ";Extended Properties=""Excel 12.0;HDR=YES""")
    myExcel.Open()
    Dim myQuery As String = "select * from [Sheet1$]"
    Dim cmd As OleDbCommand = New OleDbCommand(myQuery, myExcel)
    Dim rd As OleDbDataReader
    rd = cmd.ExecuteReader
    Do While rd.Read
        Cnumber = rd.Item(0).ToString
        Cname = rd.Item(1).ToString
        Cadd1 = rd.Item(2).ToString
        Cadd2 = rd.Item(3).ToString
        Ccity = rd.Item(4).ToString
        Cstate = rd.Item(5).ToString
        Czip = rd.Item(6).ToString
        Ctyp = rd.Item(7).ToString

        If con.State = ConnectionState.Closed Then
            con.ConnectionString = ConnectionStr
            con.Open()
        End If
        With sqlCommand
            .Connection = con
            .CommandType = CommandType.StoredProcedure
            .CommandText = "dbo.InsertCustomers"
            .Parameters.Clear()
            .Parameters.AddWithValue("@Cnum", Cnumber)
            .Parameters.AddWithValue("@Cname", Cname)
            .Parameters.AddWithValue("@Add1", Cadd1)
            .Parameters.AddWithValue("@Add2", Cadd2)
            .Parameters.AddWithValue("@City", Ccity)
            .Parameters.AddWithValue("@state", Cstate)
            .Parameters.AddWithValue("@Zip", Czip)
            .Parameters.AddWithValue("@Type", Ctyp)
            Try
                .ExecuteNonQuery()
            Catch ex As Exception
                objWriter.WriteLine(ln & vbCrLf & ex.Message)
            End Try
        End With
    Loop
    rd.Close()
    cmd.Dispose()
    myExcel.Close()
    myExcel.Dispose()


End Using

我知道我可以遍历所有进程来杀死Excel,但是用户可能会打开其他文件。我只想关闭当前正在使用的文件。任何帮助将不胜感激。

0 个答案:

没有答案