Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [c#] Lettura da file EXCEL

    Salve,
    ho visto che questo argomento è stato già trattato nel forum, però in Visual Basic (che sconosco).
    Il mio problema è che non riesco a prendere il contenuto di un determinato foglio(Foglio1) di un file excel e metterlo in un DataTable.
    codice:
    OpenFileDialog apri = new OpenFileDialog(); 
    if (apri.ShowDialog() != DialogResult.OK) 
       return; 
    
    //oggetto Applicazione Excel 
    Microsoft.Office.Interop.Excel.Application exl = new Microsoft.Office.Interop.Excel.Application(); 
    
    //da capire cos'è che serve per aprire un file excel 
    System.Reflection.Missing v = System.Reflection.Missing.Value; 
    
    //oggetto che gestisce un file excel 
    Microsoft.Office.Interop.Excel._Workbook wbook = exl.Workbooks.Open(apri.FileName, v, v, v, v, v, v, v, v, v, v, v, v, v, v); 
    
    //oggetto che gestisce un foglio excel (il nostro esempio è un file con un solo foglio)
    Microsoft.Office.Interop.Excel._Worksheet wsheet = ((Microsoft.Office.Interop.Excel._Worksheet)wbook.Sheets["Foglio1"]);
    
    //istruzione errata
    string codiceProdotto = wsheet.Cells[1, 1].ToString();
    Come faccio a prendere il valore della cella[1,1] ? Io credo che c'è qualcosa che non va nel codice (apparte l'ultima istruzione che sicuramente è errata).
    Non c'è un modo più semplice per leggere da un file excel?
    L'importante non è partecipare.. ma
    vincere!
    Errare Humanum EST, perseverare.. a OVEST!

  2. #2
    Nessuno sa dirmi dove sbaglio o perchè non riesco a prendere i valori delle celle del foglio excel?
    L'importante non è partecipare.. ma
    vincere!
    Errare Humanum EST, perseverare.. a OVEST!

  3. #3

  4. #4

    Re: [c#] Lettura da file EXCEL

    Originariamente inviato da offlieman
    Salve,
    ho visto che questo argomento è stato già trattato nel forum, però in Visual Basic (che sconosco).
    Grazie per la tua risposta, ma avevo escluso di imparare VB solo per risolvere un problema con C#.
    Comunque ho risolto e a breve metterò la soluzione per ottenere dati da un file excel.
    (ci sono stato 8 ore uomo)
    L'importante non è partecipare.. ma
    vincere!
    Errare Humanum EST, perseverare.. a OVEST!

  5. #5

    Re: [c#] Lettura da file EXCEL

    Originariamente inviato da offlieman
    //oggetto che gestisce un foglio excel (il nostro esempio è un file con un solo foglio)
    Microsoft.Office.Interop.Excel._Worksheet wsheet = ((Microsoft.Office.Interop.Excel._Worksheet)wbook. Sheets["Foglio1"]);
    wsheet è considerato un oggetto System.__ComObject e non possiamo usarlo se prima non gli diciamo di considerarlo di tipo (Microsoft.Office.Interop.Excel._Worksheet).
    Poi, per potersi muovere dentro un file excel conviene usare il range che ci da solo gli indici delle celle piene del foglio excel, evitandoci così il dilemma di sapere a priori il numero di righe e colonne popolare.
    L'istruzione che permette di prendere i valori dalle celle di excel è questa
    codice:
    string codiceProdotto = (string)(range.Cells[1,1] as Microsoft.Office.Interop.Excel.Range).Value2; 
    double prezzoDbl = (double)(range.Cells[1, 2] as Microsoft.Office.Interop.Excel.Range).Value2;
    anche range.Cells[1,1] viene visto come un System.__ComObject e va "castato" (non so se è il termine corretto) nel seguente modo:
    range.Cells[1, 2] as Microsoft.Office.Interop.Excel.Range.

    Spero di essere stato utile a qualcuno.
    Ah un'altra cosa, mi hanno detto che usare le Interop per interagire con un file.xls è una cattiva soluzione perchè è molto dispendiosa in termini di ram, in particolare perchè con le Interop si è costretti ad usare System.Reflection.Missing.Value.
    L'importante non è partecipare.. ma
    vincere!
    Errare Humanum EST, perseverare.. a OVEST!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.