Pagina 2 di 5 primaprima 1 2 3 4 ... ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 48

Discussione: Export > excel

  1. #11
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,886
    ps: lo so che è senza User Control l'esempio, ma lo lascio qui nel caso servisse (è webform)

  2. #12
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,856
    La tua btnDownloadXLS_Click fa esattamente quello che faceva la mia prima che mettessi NPOI
    Nello UC arriva fino alla fine dell'esecuzione col response end ma non fa niente, lato client dovrei vedere che il browser mi chiede se fare il download o aprire un file xls e invece picche

    Idem con l'NPOI, crea il file perchè lo vedo fisicamente sul server ma poi non esegue il window.open ...


    "incredibile bulk" è... è... inqualificabile
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  3. #13
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Credo che il file excel non si debba creare nel disco, ma in memoria, e da lì restituirlo al chiamante. (con NPOI)
    Pietro

  4. #14
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,856
    Varrebbero entrambe le soluzioni (sia con file fisico sul server che con file in memoria) se andassero...
    per la cronaca ho tolto anche lo user control e ho messo tutto in una pagina aspx... ma ancora non riesco ad avere il file xls

    Allora ho ripristinato la funzione originale (no NPOI) con file in memoria e ora, senza lo UC tra le bolas, vedo delle informazioni in più:
    codice:
     Protected Sub generaexcel()
          Dim nomefile = "ArticoliDisponibilita"
          Try
             Dim sb = New System.Text.StringBuilder()
             Response.Clear()
    
             Response.Buffer = True
             Response.AddHeader("content-disposition", "attachment;filename=" & nomefile & ".xls")
             Response.Charset = ""
             Response.ContentType = "application/vnd.ms-excel"
             sb.Append("<table border='1'>")
             sb.Append("<tr><th>Articolo</th>")
             sb.Append("<th>Descrizione</th>")
             sb.Append("<th>UM</th>")
             sb.Append("<th>Disponibilità</th></tr>")
    
             For Each item As RepeaterItem In rplista.Items
            ... generazione righe
             Next
    
             sb.Append("</table>")
    
             'style to format numbers to string
             Dim style As String = "<style> .textmode { } </style>"
             Response.Write(style)
             ' Response.Output.Write(sw.ToString())
             Dim stringa As String = sb.ToString()
             stringa = Replace(stringa, Chr(128), "") 'rimuovo il simbolo dell'euro che crea casino
             Response.Output.Write(stringa)
    
             Response.Flush()
    
             Response.End()
          Catch ex As Exception
           
    
          End Try
       End Sub
    In debug vedo che arriva liscio fino al response.End e qui tira l'eccezione

    Thread Interrotto.
    Exception state: Non è possibile valutare l'espressione perché il codice è ottimizzato oppure un frame nativo è all'inizio dello stack di chiamate.
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  5. #15
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Per capire e replicare il problema: hai un link in un user control che deve scaricarti un file excel?
    Pietro

  6. #16
    Quote Originariamente inviata da supermac Visualizza il messaggio
    ....
    Thread Interrotto.
    Exception state: Non è possibile valutare l'espressione perché il codice è ottimizzato oppure un frame nativo è all'inizio dello stack di chiamate.
    ... sembra l'effetto di una doppia esecuzione (doppio redirect o page_load ?)

    IMHO, dovresti postare un progettino che riproduca il problema

  7. #17
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,856
    il controllo da cui parte l'esecuzione della sub è un linkbutton ma non ha neanche il postbackurl definito.... non mi direte mica che se uso un bottone al posto del linkbutton funziona? ora provo
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  8. #18
    Quote Originariamente inviata da supermac Visualizza il messaggio
    il controllo da cui parte l'esecuzione della sub è un linkbutton ma non ha neanche il postbackurl definito.... non mi direte mica che se uso un bottone al posto del linkbutton funziona? ora provo
    una prova che potresti fare è remmare la parte dell'excel sostituendola con una fesseria qualunque
    e vedere in debug se ci passa due volte

    HTH

  9. #19
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Quote Originariamente inviata da supermac Visualizza il messaggio
    Varrebbero entrambe le soluzioni (sia con file fisico sul server che con file in memoria) se andassero...
    per la cronaca ho tolto anche lo user control e ho messo tutto in una pagina aspx... ma ancora non riesco ad avere il file xls

    Allora ho ripristinato la funzione originale (no NPOI) con file in memoria e ora, senza lo UC tra le bolas, vedo delle informazioni in più:
    codice:
     Protected Sub generaexcel()
          Dim nomefile = "ArticoliDisponibilita"
          Try
             Dim sb = New System.Text.StringBuilder()
             Response.Clear()
    
             Response.Buffer = True
             Response.AddHeader("content-disposition", "attachment;filename=" & nomefile & ".xls")
             Response.Charset = ""
             Response.ContentType = "application/vnd.ms-excel"
             sb.Append("<table border='1'>")
             sb.Append("<tr><th>Articolo</th>")
             sb.Append("<th>Descrizione</th>")
             sb.Append("<th>UM</th>")
             sb.Append("<th>Disponibilità</th></tr>")
    
             For Each item As RepeaterItem In rplista.Items
            ... generazione righe
             Next
    
             sb.Append("</table>")
    
             'style to format numbers to string
             Dim style As String = "<style> .textmode { } </style>"
             Response.Write(style)
             ' Response.Output.Write(sw.ToString())
             Dim stringa As String = sb.ToString()
             stringa = Replace(stringa, Chr(128), "") 'rimuovo il simbolo dell'euro che crea casino
             Response.Output.Write(stringa)
    
             Response.Flush()
    
             Response.End()
          Catch ex As Exception
           
    
          End Try
       End Sub
    In debug vedo che arriva liscio fino al response.End e qui tira l'eccezione

    Thread Interrotto.
    Exception state: Non è possibile valutare l'espressione perché il codice è ottimizzato oppure un frame nativo è all'inizio dello stack di chiamate.

    Questo codice funziona!
    Pietro

  10. #20
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Può essere una sciochezza, ma se prima di
    Catch ex As Exception
    metti
    Catch ex As ThreadAbortException

    cambia qualcosa?
    Pietro

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.