Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1

    lettura file excel con condizione

    buona sera a tutti.dopo tanti anni di abbandono ho ripreso vb.net per un piccolo exe che legga un file excel
    il file contiene un solo foglio,e ha varie colonne;io devo leggere tutte le righe e solo dove trovo la scritta "roma" aumentare il contatorearrivo.
    è di una banalità unica ma mi sto incartando da solo : qui di seguito il mio codice.
    codice:
    Dim percorso As String
    Dim contatorerighe As Integer
    Dim contatorearrivo As Integer
    dim arrivo 
     Dim celle As Integer = 1
    
    Dim xlApp As New excel.Application
    
            Dim wb As excel.Workbook
            Dim ws As excel.Worksheet
            If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
                percorso = OpenFileDialog1.FileName
            Else
                MsgBox("Hai scelto di annullare", vbCritical)
    
                Exit Sub
            End If
    
    
            wb = xlApp.Workbooks.Open(percorso)
            ws = xlApp.Worksheets(1)
    
            Do While wb.ActiveSheet(celle, 4).value Isnot Nothing 
    if wb.ActiveSheet(celle, 4).value = "roma"
    then 
    contatorearrivo = contatorearrivo +1
    end if
                contatore = contatore + 1
                celle = celle + 1
    
            Loop
            Label3.Text = contatore
    
            wb.Close()
            xlApp.Quit()
    
        End Sub
    ma non funziona : credo l'opzione ".value" sia stata deprecata.mi sono incartato in una sciocchezza ma non trovo l'errore.
    qualcuno sa aiutarmi ?

  2. #2
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,994
    credo che l'errore sia qui
    codice:
    Do While wb.ActiveSheet(celle, 4).value Isnot Nothing
    e nelle righe simili, la corretta sintassi è
    codice:
    Do While wb.ActiveSheet.Cells(celle, 4).value Isnot Nothing

  3. #3
    il contatore me lo da a 0 in realtà ci sono 20 righe sul file...
    non ho capito se la sintassi ws = xlApp.Worksheets(1) è corretta : il foglio si chiama in un modo assurdo
    non capisco dov'è l'errore.
    MI CORREGGO : il file è csv,può aiutare a capire l'errore ?
    Ultima modifica di eurostar_italia; 05-02-2018 a 19:56

  4. #4
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,994
    in quale ambiente stai lavorando ?

  5. #5
    Quote Originariamente inviata da patel Visualizza il messaggio
    in quale ambiente stai lavorando ?
    vs 2017 community con excel 2016.
    il problema credo sia il csv....che excel apre normalmente ma che essendo un csv è una riga unica realmente...quindi non si possono fare operazioni..

  6. #6
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Non mi risulta che per forza un csv è su una riga unica. Anzi.
    Se lo è allora contiene un solo record.

    Possiamo vedere questo file?

  7. #7
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,994
    prima di tutto per aprire un csv da excel occorre che i delimitatori siano virgole e non ;
    poi hai inserito 2 contatori invece di uno e non capisco perché, comunque prova queste modifiche
    codice:
           Dim percorso As String, contatore As Integer
            Dim celle As Integer = 1
            Dim xlApp As New Excel.Application
            Dim wb As Excel.Workbook
            Dim ws As Excel.Worksheet
            If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
                percorso = OpenFileDialog1.FileName
            Else
                MsgBox("Hai scelto di annullare", vbCritical)
                Exit Sub
            End If
            wb = xlApp.Workbooks.Open(percorso)
            ws = xlApp.Worksheets(1)
            Do While wb.ActiveSheet.cells(celle, 4).value <> ""
                If wb.ActiveSheet.cells(celle, 4).value = "roma" Then
                    contatore = contatore + 1
                End If
                celle = celle + 1
            Loop
            MsgBox(contatore.ToString)
            wb.Close()
            xlApp.Quit()

  8. #8
    allora un contatore si attiva solo se trova la scritta roma (la colonna in questione è piena di nomi di citta);l'altro conta le righe totali (mi serve per sapere quante prenotazioni sono presenti);
    cmq funziona tutto a patto di salvare il file come foglio excel e non lasciarlo come .csv
    devo trovare il modo di aprirlo e richiuderlo come xls senza far vedere nulla all'utente

  9. #9
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,994
    apri il tuo csv con notepad e controlla i delimitatori, se sono ; sostituiscili tutti con virgole, salva e riprova.
    L'utente non vede niente se non rendi visibile xlApp

  10. #10
    ti spiego l'utente fa download di questo file da un applicativo esterno;glielo faccio caricare nel mio piccolo exe (che non ha installazione,quindi non salvo nulla) e dovrebbe ciclare questi record.
    dovrei farglielo aprire,sostituire le ";" salvare,quindi riaprire e ciclare : ho capito bene?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.