94 messaggi dal 04 settembre 2010
Buongiorno,
volevo chiedere se qualcuno può aiutarmi a risolvere un problema di caricamento di un file excel in un datagrid, precisando che dovrei iniziare a caricare il file dalla seconda riga in poi.

Questo è il codice che uso per il caricamento
Private Sub Import_To_Grid(ByVal FilePath As String, ByVal Extension As String, ByVal isHDR As String)

        Dim conStr As String = ""
        Select Case Extension
            Case ".xls"
                'Excel 97-03 
                conStr = ConfigurationManager.ConnectionStrings("Excel03ConString").ConnectionString
                Exit Select
            Case ".xlsx"
                'Excel 07 
                conStr = ConfigurationManager.ConnectionStrings("Excel07ConString").ConnectionString
                Exit Select
        End Select

        conStr = String.Format(conStr, FilePath, isHDR)

        Dim connExcel As New OleDbConnection(conStr)
        Dim cmdExcel As New OleDbCommand()
        Dim oda As New OleDbDataAdapter()
        Dim dt As New DataTable()

        cmdExcel.Connection = connExcel

        'Get the name of First Sheet 

        connExcel.Open()

        Dim dtExcelSchema As DataTable
        dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)
        Dim SheetName As String = dtExcelSchema.Rows(0)("TABLE_NAME").ToString()
        connExcel.Close()



        'Read Data from First Sheet 
        connExcel.Open()
        cmdExcel.CommandText = "SELECT * From [" & SheetName & "]"
        oda.SelectCommand = cmdExcel
        oda.Fill(dt)
        connExcel.Close()
       
        'Bind Data to GridView 
        GridView1.Caption = Path.GetFileName(FilePath)
        GridView1.DataSource = dt
        GridView1.DataBind()


        lblCount.Text = "Nr. Record:  " & GridView1.Rows.Count - 2

    End Sub


Spero in un aiuto grazie mille in anticipo
28 messaggi dal 09 ottobre 2019
www.breveglieri.it
Mau67 ha scritto:

volevo chiedere se qualcuno può aiutarmi a risolvere un problema di caricamento di un file excel in un datagrid, precisando che dovrei iniziare a caricare il file dalla seconda riga in poi.


Ma qual è il problema specifico? Ignorare la prima riga della tabella che carichi nella griglia?
In tal caso, non è sufficiente rimuoverla prima di fare il binding?

MARCO BREVEGLIERI
(Senior Software and Web Developer, Teacher and Consultant)
» Homepage: https://www.breveglieri.it
» Blog: https://www.compilaquindiva.com
» Podcast: https://www.delphipodcast.com
94 messaggi dal 04 settembre 2010
buongiorno,
intanto grazie per la risposta, si poi confermo che devo skippare le prime 2 righe del file, in quanto il predetto file viene caricato dagli operatori.
Il problema che ho a che fare con persone che informaticamente sono negate, e quindi si rischia di compromettere il file se gli dò la possibilità di aprirlo e cancellare le righe.
28 messaggi dal 09 ottobre 2019
www.breveglieri.it
Mau67 ha scritto:

Il problema che ho a che fare con persone che informaticamente sono negate, e quindi si rischia di compromettere il file se gli dò la possibilità di aprirlo e cancellare le righe.


Io mi riferivo al fatto che sia tu a rimuovere le righe tramite codice, ad esempio accedendo alle righe della DataTable e richiamando Delete sulla prima.

Vedi altri esempi qui:
https://stackoverflow.com/questions/5648339/deleting-specific-rows-from-datatable

Ciao!

MARCO BREVEGLIERI
(Senior Software and Web Developer, Teacher and Consultant)
» Homepage: https://www.breveglieri.it
» Blog: https://www.compilaquindiva.com
» Podcast: https://www.delphipodcast.com
94 messaggi dal 04 settembre 2010
A ok ma ho un dubbio, cioè la prima riga nella posizione A1riporta la dicitura "Report" la riga successiva è vuota in tutte le celle, dalla terza riga ci sono le intestazioni di colonna.
Detto questo se uso

ds.Tables(0).AcceptChanges()
For Each row In ds.Tables(0).Rows
    ds.Tables(0).Rows(counter).Delete()
    counter += 1
Next
ds.Tables(0).AcceptChanges()


elimina solo la prima e seconda riga?
28 messaggi dal 09 ottobre 2019
www.breveglieri.it
Mau67 ha scritto:

Detto questo se uso

ds.Tables(0).AcceptChanges()
For Each row In ds.Tables(0).Rows
    ds.Tables(0).Rows(counter).Delete()
    counter += 1
Next
ds.Tables(0).AcceptChanges()


elimina solo la prima e seconda riga?


No, quel codice elimina tutte le righe. Il link riportato era per fornire degli esempi di utilizzo dei metodi con i quali è possibile eliminare righe da una DataTable, mostrando come si accede alla riga i-esima, come si fa il Delete, qual è la collection delle righe da ispezionare (Rows), ma il codice ovviamente devi scriverlo tu studiando la documentazione dei suddetti metodi e implementandolo in base alla casistica che devi gestire.

Prenditi un attimo di tempo per analizzare il codice e leggere la documentazione relativa e prova a scrivere la procedura.

MARCO BREVEGLIERI
(Senior Software and Web Developer, Teacher and Consultant)
» Homepage: https://www.breveglieri.it
» Blog: https://www.compilaquindiva.com
» Podcast: https://www.delphipodcast.com
94 messaggi dal 04 settembre 2010
Sono arrivato a questa conclusione
Dim i As Integer = 0
        Dim rows() As DataRow = dt.Select
        Dim row As DataRow = rows(0)
        Do While (i < rows.Length)
            row.Delete()
            i = (i + 1)
        Loop
        dt.AcceptChanges()


il problema è che mi cancella solo la seconda riga, lasciando la prima
94 messaggi dal 04 settembre 2010
Dopo varie prove ho notato che la prima riga nella colonna A1 ce la scritta "Report", ho provato a cancellare la scritta mantenendo la riga e con dt.Rows.RemoveAt(0) mi elimina entrambi le righe.

Come faccio a togliere anche la prima riga nonostante ci sia scritto "Report nel primo campo?
Non riesco a trovare la soluzione

Grazie

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.