Leggere e scrivere su file excel usando vb.net

di il
5 risposte

Leggere e scrivere su file excel usando vb.net

Buongiorno, sono alle prime armi con vb.net.
Devo creare un' App desktop e in un form ho bisogno che quando schiaccio un bottone:
-si apra un file excel
-si cerchi la prima riga vuota
-si possa scrivere in quella riga
-si salvi il file (per ora salvo su un file diverso perchè non so come farglielo salvare su se stesso. Se glielo passo per riferimento mi da un errore)
Per aprire il file ho creato una funzione che poi richiamo, e questa funziona. Per il resto so che serve un ciclo per leggere le righe piene del file ma c'è qualcosa che sbaglio
Riporto di seguito i codici:
Public Function OpenExcel(filename As String) As Object
        Dim retval As Object = Nothing
        Try
            Dim excel As Microsoft.Office.Interop.Excel.Application
            Dim wb As Microsoft.Office.Interop.Excel.Workbook
            Dim ws As Microsoft.Office.Interop.Excel.Worksheet
            excel = New Microsoft.Office.Interop.Excel.Application
            wb = excel.Workbooks.Open(filename)
            excel.Visible = False
            wb.Activate()
            ws = wb.Worksheets.Item(1)
            ws = excel.ActiveSheet
            retval = ws.Cells(1, 1).value

        Catch ex As exception

        End Try
    End Function
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

        Dim dialogo As OpenFileDialog
        dialogo = New OpenFileDialog()
        dialogo.ShowDialog()
        Dim ds As Object = f.OpenExcel(dialogo.FileName)

 Dim oExcel As Object
        oExcel = CreateObject("Excel.Application")
        Dim oBook As Object
        Dim oSheet1 As Object

        oBook = oExcel.Workbooks.Add()
        oSheet1 = oBook.Worksheets(1)

        oBook = oExcel.ActiveWorkbook

        Dim UR As Integer = 0
        UR = oSheet1.Range("A" & oSheet1.Rows.Count).End(Microsoft.Office.Interop.Excel.XlDirection.xlUp).Row
        For rr = 1 To UR
            If oSheet1.Range("A" & rr).Value = ("") Then
                oSheet1.Range("A" & rr).value = "text1"
            Else
                MsgBox("box pieno")
            End If
        Next rr

oExcel.DisplayAlerts = False
        oBook.SaveAs("C:\Users\an\Desktop\New" & ".xlsx")
        oBook.Close()
        oBook = Nothing

5 Risposte

  • Re: Leggere e scrivere su file excel usando vb.net

    La funzione OpenExcel() dovrebbe restituire SOLO il nome del file selezionato.
    Perché l'hai infarcita di tutto quel po-po di dichiarazioni inutili (....Interop.... )?

    In Button2, poi, usi il riferimento a Microsoft.Office ... (inutilmente) e quindi complichi tutto (inutilmente) mescolando insieme late-binding e early-binding.

    Devi comunque spiegare quali errori ricevi, e dove li ricevi.
  • Re: Leggere e scrivere su file excel usando vb.net

    Scusa, non ho ben capito quello che intendi..ho provato a leggere anche delle guide ma non riesco a trovarne una chiara.
    L'errore che mi da è su questo

    UR = oSheet1.Range("A" & oSheet1.Rows.Count).End(Microsoft.Office.Interop.Excel.XlDirection.xlUp).Row

    e per quello che ho capito riguarda l'interoperabilità.

    Sai suggerirmi un codice migliore per scrivere quello che voglio fare?
  • Re: Leggere e scrivere su file excel usando vb.net

    Non esiste un 'codice migliore', esiste il codice corretto o sbagliato.

    Guarda il progetto linkato nella mia firma su Office Automation in NET: VS2010 - Early-Late Binding
  • Re: Leggere e scrivere su file excel usando vb.net

    gibra ha scritto:


    Non esiste un 'codice migliore', esiste il codice corretto o sbagliato.

    Guarda il progetto linkato nella mia firma su Office Automation in NET: VS2010 - Early-Late Binding
    Grazie, link fatto molto bene!
  • Re: Leggere e scrivere su file excel usando vb.net

    Ciao,
    tra gli articoli di iprogrammatori, c'è anche questo articolo http://www.iprogrammatori.it/articoli/programmazione/art_aspnet-visualizzare-un-file-excel-in-una_1443.aspx lo avevi visto?
Devi accedere o registrarti per scrivere nel forum
5 risposte