Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135

    Problema con estensione file excel

    Ciao a tutti.

    Il problema è un pò antipatico ma vedrò di spiegarlo al meglio:

    1) tramite una procedura di upload carico dei file formato excel sul server ed inserisco i dati in essi contenuti in un db access;

    2) nel form di caricamento ho inserito un controllo sull'ext xls del file e funziona, quando il file selezionato è diverso da XLS non si va avanti;

    3) mi accorgo però che esistono alcuni file con ext XLS ma nei quali in realtà (se li apro in excel e li salvo con nome) il tipo di file associato all'ext è Foglio di calcolo XML (*.XML), tipo: "agosto.xls";

    Naturalmente, il controllo sul form salta perchè l'estensione è XLS, mentre lo script va in errore perchè in realtà ciò che sto cercando di caricare è un foglio di calcolo XML:

    codice:
    Error Type:
    Microsoft JET Database Engine (0x80004005)
    External table is not in the expected format.
    Come rimediare????
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  2. #2
    IMHO non c'è modo, perché potresti sempre trovare un buontempone che salva un file di word con estensione .xls... limitati a gestire l'errore con una on error

  3. #3
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Originariamente inviato da optime
    IMHO non c'è modo, perché potresti sempre trovare un buontempone che salva un file di word con estensione .xls... limitati a gestire l'errore con una on error
    Intendi On Error Resume Next ?

    Ho provato, ma in questo modo apparentemente il caricamento va a buon fine, l'utente di turno viene ingannato ed è convinto d'aver fatto tutto correttamente...
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  4. #4
    mannaggia, asp è manchevole di brutto su certe cose... comunque, se tu guardi la guida della on error http://msdn.microsoft.com/library/de...49c74984a9.asp

    vedi che esiste anche l'oggetto err, quindi potresti fare

    on error resume next
    ..tua istruzione
    if err.number=xxx then --- c'è un errore
    on error goto 0

    devi fare un po' di prove

  5. #5
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Ok, grazie ho trovato questo articolo

    L'ho provato sul mio codice asp:

    codice:
    session.LCID = 1040
    
    server.scripttimeout = 10000 
    
    ' Abilita il buffer di esecuzione 
    Response.Buffer = true 
    
    ' Abilita la gestione degli errori 
    On Error Resume Next
    
     ' Punto di controllo degli errori 
    if Err.Number <> 0 then 
    
    ' Svuota il buffer di elaborazione 
    Response.Clear() 
      
    Response.write "Errore!"
     
    else
      
      DestinationFileName = server.mapPath("XLS/" & Form("File1").FileName)
    
        Set RS = Server.CreateObject("ADODB.Recordset") 
        Rs.Open "SELECT * from [Report$]", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&DestinationFileName&";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""
    Ma s'impalla la pagina... fa l'upload ugualmente anche se il file è XML e si blocca tutto...
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  6. #6
    metti la on error resume next immediatamente prima della riga che da' l'errore, e ricordati di usare on error goto 0 per disabilitare la gestione

  7. #7
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Se intendi questo, non cambia nulla:

    codice:
    session.LCID = 1040
    server.scripttimeout = 10000 
    
    ' Abilita il buffer di esecuzione 
    Response.Buffer = true 
    
    strNomeFile =  Form("File1").FileName
    
      ' Abilita la gestione degli errori 
    On Error Resume Next
    
      ' Punto di controllo degli errori 
    if Err.Number <> 0 then
    
    ' Svuota il buffer di elaborazione 
    Response.Clear() 
      
      		Response.write "Errore !" 
    on error goto 0
    
    else
      
      DestinationFileName = server.mapPath("XLS/" & Form("File1").FileName)
    
        Set RS = Server.CreateObject("ADODB.Recordset") 
        Rs.Open "SELECT * from [Report$]", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&DestinationFileName&";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  8. #8
    fatti stampare l'errore che ricevi e controlla che sia esattamente quello che avresti se non fosse attiva la on error

  9. #9
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Originariamente inviato da optime
    fatti stampare l'errore che ricevi e controlla che sia esattamente quello che avresti se non fosse attiva la on error
    Disattivando la on error:

    codice:
    Error Type:
    Microsoft JET Database Engine (0x80004005)
    External table is not in the expected format.
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  10. #10
    quale istruzione ti dà l'errore?

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.