如何知道vb.net何时完成导出到excel所以我可以打开它

时间:2015-01-14 10:20:39

标签: vb.net dataset

你知道我的应用程序何时完成导出到excel, 我的程序代码是这样的,问题是应用程序在导出完成之前打开excel文件

Public Sub ExportDatasetToExcel(ByVal ds As DataSet, ByVal strExcelFile As String) 
        Try
            If System.IO.File.Exists(strExcelFile) = True Then
                System.IO.File.Delete(strExcelFile)
            End If

            fdlExportExcel.Show()

            Dim conn As New OleDbConnection(String.Format("provider=Microsoft.Jet.OLEDB.4.0; Data Source='{0}';" & "Extended Properties='Excel 8.0;HDR=YES;'", strExcelFile))
            conn.Open()
            Dim strTableQ(ds.Tables.Count) As String
            Dim i As Integer = 0
            'making table query
            For i = 0 To ds.Tables.Count - 1
                strTableQ(i) = "CREATE TABLE [" & ds.Tables(i).TableName & "]("
                Dim j As Integer = 0
                For j = 0 To ds.Tables(i).Columns.Count - 1
                    Dim dCol As DataColumn
                    dCol = ds.Tables(i).Columns(j)
                    strTableQ(i) &= " [" & dCol.ColumnName & "] varchar(255) , "
                Next
                strTableQ(i) = strTableQ(i).Substring(0, strTableQ(i).Length - 2)
                strTableQ(i) &= ")"
                Dim cmd As New OleDbCommand(strTableQ(i), conn)
                cmd.ExecuteNonQuery()
            Next
            'making insert query
            Dim strInsertQ(ds.Tables.Count - 1) As String
            For i = 0 To ds.Tables.Count - 1
                strInsertQ(i) = "Insert Into " & ds.Tables(i).TableName & " Values ("
                For k As Integer = 0 To ds.Tables(i).Columns.Count - 1
                    strInsertQ(i) &= "@" & ds.Tables(i).Columns(k).ColumnName & " , "
                Next
                strInsertQ(i) = strInsertQ(i).Substring(0, strInsertQ(i).Length - 2)
                strInsertQ(i) &= ")"
            Next
            'Now inserting data
            For i = 0 To ds.Tables.Count - 1
                For j As Integer = 0 To ds.Tables(i).Rows.Count - 1
                    Dim cmd As New OleDbCommand(strInsertQ(i), conn)
                    For k As Integer = 0 To ds.Tables(i).Columns.Count - 1
                        cmd.Parameters.AddWithValue("@" & ds.Tables(i).Columns(k).ColumnName.ToString(), ds.Tables(i).Rows(j)(k).ToString())
                    Next
                    cmd.ExecuteNonQuery()
                    cmd.Parameters.Clear()
                Next
            Next
            conn.Close()
            If conn.State = ConnectionState.Closed Then
                fdlExportExcel.Close()
                MsgBox("Export Done !, File path = " + strExcelFile)

                If System.IO.File.Exists(strExcelFile) = True Then
                    Process.Start(strExcelFile)
                End If
            End If

        Catch ex As Exception
            MsgBox(ex.Message)
            If ConnectionState.Open = 1 Then cn.Close()
        End Try

    End Sub
你已经在这方面工作了2天仍然没有得到答案

0 个答案:

没有答案