How to upload xls file's data to SQL Server in devexpress popup control?

强颜欢笑 提交于 2019-12-24 08:08:40

问题


I have enquiry on how to insert xls file data into SQL Server. The upload button, and gridview control are placed inside the devexpress popup control and the code works without the popup control but doesn't work with popup control. When I inserted the xls file and clicked the upload button, the label display showed "Please select a file to upload!" although I have did this.

ASP.NET markup:

<dx:ASPxPopupControl ID="popupControl" ClientInstanceName="popupControl" 
    AllowDragging="true" ShowOnPageLoad="false" runat="server" AllowResize="true" >
    <ContentCollection>
        <dx:PopupControlContentControl runat="server">                             
            <div class="flexs">
                <dx:ASPxUploadControl ID="XXUpload" runat="server" UploadMode="Auto" ValidationSettings-AllowedFileExtensions=".xls" width="500px" >
                </dx:ASPxUploadControl>
                <dx:ASPxLabel ID="Label2" runat="server" Text=""></dx:ASPxLabel>
                <dx:ASPxButton ID="DataUpload" runat="server" Text="UPLOAD" OnClick="DataUpload_Click ">
                </dx:ASPxButton>                                                       
                <dx:ASPxGridView ID="UpdateSplitGrid" ClientIDMode="Static" ClientInstanceName="UpdateSplitGrid" runat="server" Width="200%" DataSourceID="dtSource2" Theme="DevEx" >
                .....
                </dx:ASPxGridView>
           </div>
        </dx:PopupControlContentControl>
    </ContentCollection>
</dx:ASPxPopupControl>

Vb.net code:

Function uploadExcel1(filePath As String) As String
        Dim str As String = ""
        Dim namestr1 As String = XXUpload.UploadedFiles.ToArray(0).FileName.ToString
        If namestr1 <> "" Then
            If Not XXUpload.UploadedFiles.ToArray(0).IsValid Then
                str = "Fail to Upload " + namestr1

            Else
                XXUpload.UploadedFiles.ToArray(0).SaveAs(filePath)
                str = " Successfully Uploaded!"

            End If

        Else
            str = "Please select a File to upload!"

        End If

        Return str

    End Function

 Function getDTe(filename As String, ByVal sql As String) As DataTable

        Dim dt As New DataTable()
        Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1;';"

        Dim connection As New OleDbConnection(connectionString)
        Dim adapter As New OleDbDataAdapter(sql, connection)
        adapter.Fill(dt)
        Return dt

    End Function

  Protected Sub DataUpload_Click(sender As Object, e As EventArgs)

        Dim filepath As String = "C:\New folder\" + XXUpload.UploadedFiles.ToArray(0).FileName.ToString + ".xls"

        Dim msg As String = uploadExcel1(filepath)
        Label2.Text = msg

        If msg.Contains("Successfully") Then


            Dim sql As String = "select * from [Sheet1$]"
            Dim dt As New DataTable
            dt = getDTe(filepath, sql)

            If dt.Rows.Count > 0 Then

                Dim i As Integer = 0
                Dim colname() As String = {"LotID", "Split_Cat", "Engr_Time", "PLANDESC", "STEPSEQ", "EQPTYPE", "PPID", "STEPDESC", "Split", "Recipe", "F11", "F12", "F13", "F14", "F15", "F16", "F17", "F18", "F19", "F20", "F21", "F22"}

                For Each dc As DataColumn In dt.Columns
                    If dc.ColumnName.ToString <> colname(i) Then
                        Label2.Text = "  File is not in correct format - Details: " + dc.ColumnName.ToString
                        Return
                    End If
                    i = i + 1

                Next


                For Each dr In dt.Rows

                    Try

                        Dim LotID As String = dr("LotID").ToString
                        Dim Split_Cat As String = dr("Split_Cat").ToString
                        Dim Engr_Time As String = dr("Engr_Time").ToString
                        Dim PLANDESC As String = dr("PLANDESC").ToString
                        Dim STEPSEQ As String = dr("STEPSEQ").ToString
                        Dim EQPTYPE As String = dr("EQPTYPE").ToString
                        Dim PPID As String = dr("PPID").ToString
                        Dim STEPDESC As String = dr("STEPDESC").ToString
                        Dim Split As String = dr("Split").ToString
                        Dim Recipe As String = dr("Recipe").ToString
                        Dim a As String = dr("F11").ToString
                        Dim b As String = dr("F12").ToString
                        Dim c As String = dr("F13").ToString
                        .............

                        Dim insertsql2 As String = ""
                        insertsql2 += "insert into PTHOME.dbo.SplitTable (LotID,Split_Cat,Engr_Time,PLANDESC,STEPSEQ,EQPTYPE,PPID,STEPDESC,Split,Recipe,[1],[2],[3]) values "
                        insertsql2 += "('" + LotID + "','" + Split_Cat + "','" + Engr_Time + "','" + PLANDESC + "','" + STEPSEQ + "','" + EQPTYPE + "','" + PPID + "','" + STEPDESC + "','" + Split + "','" + Recipe + "', "
                        insertsql2 += " '" + a + "','" + b + "','" + c + "') "


                        Dim conn As New SqlConnection(connString)
                        Dim cmd As New SqlCommand(insertsql2, conn)
                        conn.Open()
                        Dim res As Integer = cmd.ExecuteNonQuery
                        conn.Close()

                        If res > 0 Then
                            Label2.Text = res.ToString + " Records Successfully Uploaded! "

                            UpdateSplitGrid.DataBind()

                        Else
                            Label2.Text = " NO Records Uploaded! "
                        End If



                    Catch ex As Exception

                        Label2.Text = " Failed to Upload, pls check your data or file format ! "

                    End Try

                Next

            End If


        End If

    End Sub

When i upload the xls file, the label displayed "Please select a File to upload!", anything i missed out in the popup control? Please guide me on this, thanks in advance.

EDIT*

I have changed the upload control to this and it no longer showed the "Please select a File to upload!" now there is another error showed "File is not in correct format - Details: F11", the error seems to lie on the column [1]-[12], but the excel column is 1-12 and the column in database is [1]-[12].how can i achieve this? ( Solved by changing the number to F11 and so on.)

 <dx:ASPxUploadControl runat="server" ClientInstanceName="XXUpload" ID="XXUpload" Width="600px" >
    <ValidationSettings AllowedFileExtensions=".xls"></ValidationSettings>
     </dx:ASPxUploadControl> 

Edit 2* The data has uploaded successfully to sql server and now another problem occurred, the data uploaded to sql server wont show in the UpdateSplitGrid gridview although i have declared this in my code.

If res > 0 Then
Label2.Text = res.ToString + " Records Successfully Uploaded! "
UpdateSplitGrid.DataBind()

回答1:


Your ASPxUploadControl, the XXUpload, doesn't have any function to execute when upload is complete. I suggest you use OnFileUploadComplete event with FileUploadMode="OnPageLoad".



来源:https://stackoverflow.com/questions/52489907/how-to-upload-xls-files-data-to-sql-server-in-devexpress-popup-control

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!