+ Rispondi al Thread
Pagina 2 di 2 primaprima 12
Visualizzazione dei risultati da 11 a 16 su 16

Discussione: Generare Excel da query

  1. #11
    Luogo
    BS / MI
    Post
    1,608
    Blogs
    33
    Quote Originariamente inviato da acer1629 Visualizza il messaggio
    Non ho assolutamente ignorato il tuo post, il problema è che Interop non so cosa sia ... e non uso Asp.net ma asp base.
    Vedo di recuperare un esempio che ho postato su altro Forum ( per un utente con il tuo stesso problema ), perciò stay tuned ...
    Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ]
    Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ]

  2. #12
    Luogo
    BS / MI
    Post
    1,608
    Blogs
    33
    Ok, ci sono.

    Questo è il codice di testo essenziale. La struttura è lineare, perciò si presta bene alla scrittura sequenziale dei dati...

    1. L'intestazione è comune a tutti i file creati :

    codice:
    <?xml version="1.0"?>
    <?mso-application progid="Excel.Sheet"?>
    
    <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
     xmlns:o="urn:schemas-microsoft-com:office:office"
     xmlns:x="urn:schemas-microsoft-com:office:excel"
     xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
     xmlns:html="http://www.w3.org/TR/REC-html40">
    2. Aggiungo Foglio1 :

    codice:
      	<Worksheet ss:Name="Foglio1">
    
      		<Table ss:ExpandedColumnCount="4">
    
       		<Column ss:Width="87.75" ss:Span="3"/>
    
    		<Row>
        			<Cell><Data ss:Type="String">ID</Data></Cell>
        			<Cell><Data ss:Type="String">NOME</Data></Cell>
        			<Cell><Data ss:Type="String">COGNOME </Data></Cell>
        			<Cell><Data ss:Type="String">STATO</Data></Cell>
       		</Row>
    
       		<Row>
        			<Cell><Data ss:Type="Number">1</Data></Cell>
        			<Cell><Data ss:Type="String">nome1</Data></Cell>
        			<Cell><Data ss:Type="String">cognome1</Data></Cell>
        			<Cell><Data ss:Type="String">stato1</Data></Cell>
       		</Row>
       		
    		<Row>
        			<Cell><Data ss:Type="Number">2</Data></Cell>
        			<Cell><Data ss:Type="String">nome2</Data></Cell>
        			<Cell><Data ss:Type="String">cognome2</Data></Cell>
        			<Cell><Data ss:Type="String">stato2</Data></Cell>
       		</Row>
    	
    		<Row>
        			<Cell><Data ss:Type="Number">3</Data></Cell>
        			<Cell><Data ss:Type="String">nome3</Data></Cell>
        			<Cell><Data ss:Type="String">cognome3</Data></Cell>
        			<Cell><Data ss:Type="String">stato3</Data></Cell>
       		</Row>
    
       		</Table>
    
    	</Worksheet>
    3. Aggiungo Foglio2 :
    codice:
    	<Worksheet ss:Name="Foglio2">
    
      		<Table ss:ExpandedColumnCount="4">
    
       		<Column ss:Width="87.75" ss:Span="3"/>
    
    		<Row>
        			<Cell><Data ss:Type="String">ID</Data></Cell>
        			<Cell><Data ss:Type="String">NOME</Data></Cell>
        			<Cell><Data ss:Type="String">COGNOME </Data></Cell>
        			<Cell><Data ss:Type="String">STATO</Data></Cell>
       		</Row>
    
       		<Row>
        			<Cell><Data ss:Type="Number">1</Data></Cell>
        			<Cell><Data ss:Type="String">nome1</Data></Cell>
        			<Cell><Data ss:Type="String">cognome1</Data></Cell>
        			<Cell><Data ss:Type="String">stato1</Data></Cell>
       		</Row>
       		
    		<Row>
        			<Cell><Data ss:Type="Number">2</Data></Cell>
        			<Cell><Data ss:Type="String">nome2</Data></Cell>
        			<Cell><Data ss:Type="String">cognome2</Data></Cell>
        			<Cell><Data ss:Type="String">stato2</Data></Cell>
       		</Row>
    	
    		<Row>
        			<Cell><Data ss:Type="Number">3</Data></Cell>
        			<Cell><Data ss:Type="String">nome3</Data></Cell>
        			<Cell><Data ss:Type="String">cognome3</Data></Cell>
        			<Cell><Data ss:Type="String">stato3</Data></Cell>
       		</Row>
    
       		</Table>
    
    	</Worksheet>
    3. Chiudo il TAG <Workbook> :
    codice:
    </Workbook>
    4. Mettere tutto assieme e salvare come .xls :
    Come si può notare è facile inserire più Fogli.
    Automatizzando l'operazione si può creare qualsiasi WorkBook con formattazioni di base ( in questo caso do una larghezza fissa alle prime 4 colonne )...
    Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ]
    Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ]

  3. #13
    L'avatar di acer1629
    acer1629 non è in linea Scolaretto
    Luogo
    Italy
    Post
    238
    per "Mettere tutto assieme e salvare come .xls " cosa intendi ?
    Il codice che mi hai indicato, lo posso "fondere" con quello che già ho usato nella pagina ASP ?
    La generazione dell'excel è solo una mini parte di una mega pagina ...

    Scusa ma su programmazione web sono davvero poco ferrato ...
    Il meglio deve ancora venire !

  4. #14
    Luogo
    BS / MI
    Post
    1,608
    Blogs
    33
    Quote Originariamente inviato da acer1629 Visualizza il messaggio
    per "Mettere tutto assieme e salvare come .xls " cosa intendi ?
    Intendevo che se vuoi testare il mio esempio precedente, per verificare quanto sto dicendo, devi mettere insieme :
    --> Intestazione ( che include apertura TAG <WorkBook> )
    --> + Foglio1
    --> + Foglio2
    --> + Chiusura TAG <WorkBook>

    Metti tutto insieme in un unico file di testo e nominalo come desideri e con estensione ".xls".
    Infine prova ad aprirlo con Excel e vedrai il risultato.

    E' per farti capire passo-passo che puoi scrivere un File Excel partendo da un txt vuoto.

    Quote Originariamente inviato da acer1629 Visualizza il messaggio
    Il codice che mi hai indicato, lo posso "fondere" con quello che già ho usato nella pagina ASP ?
    Certamente. E' proprio quello il senso del mio suggerimento.
    Alla fine tu da ASP vai a creare un file di testo, con quelle istruzioni che hai già usato, immettendo nell'ordine giusto le parti che lo compongono, come ho illustrato nel mio file di test.
    Ad esempio con operazioni di Append in un ciclo di lettura di un Recordset o di altra fonte dati...
    Trattandosi, come ho già detto, di uno schema molto lineare, non ti sarà difficile prendere i campi di interesse, e aggiungere i tags necessari per generare quel tipo di codice Xml.

    Come già detto, è un procedimento che ho suggerito con successo ( e anche qui un bel punto Reputazione ci starebbe ! ) ad altri, perchè ti permette di scrivere un file Excel riga per riga, come un qualsiasi stream di testo, e soprattutto senza bisogno di chiamare oggetti Office sul server !
    Ma non solo : puoi inserire più Fogli, e inoltre gestire una certa formattazione, come nel nostro caso forzare la dimensione delle Colonne, ecc...
    Caratteristiche che non ti puoi permettere con un semplice CSV.
    Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ]
    Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ]

  5. #15
    L'avatar di acer1629
    acer1629 non è in linea Scolaretto
    Luogo
    Italy
    Post
    238
    Quindi posso fare una cosa di questo tipo ?


    codice:
    <?xml version="1.0"?>
    <?mso-application progid="Excel.Sheet"?>
    
    <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
     xmlns:o="urn:schemas-microsoft-com:office:office"
     xmlns:x="urn:schemas-microsoft-com:office:excel"
     xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
     xmlns:html="http://www.w3.org/TR/REC-html40">
    
    <Worksheet ss:Name="Foglio1">
    
      		<Table ss:ExpandedColumnCount="4">
    
       		<Column ss:Width="87.75" ss:Span="3"/>
    
    		<%rs.Open query
      		     while not rs.eof%>
    
    		<Row>
        			<Cell><Data ss:Type="String"><%rs(0)%></Data></Cell>
        			<Cell><Data ss:Type="String"><%rs(1)%></Data></Cell>
        			<Cell><Data ss:Type="String"><%rs(2)%> </Data></Cell>
        			<Cell><Data ss:Type="String"><%rs(3)%></Data></Cell>
       		</Row>
    
    		<%  rs.movenext
                   wend	
                    rs.close
                    set rs=nothing%>
    
       		</Table>
    
    	</Worksheet>
    
    </Workbook>
    Non ho ancora capito se cmq la mia parte che genera il file di testo, va tolta o deve rimanere andando poi a fare la formattazione tramite i tag che mi hai passato.
    Perchè nel tuo blocco di codice non c'è ad esempio il nome file, quindi fisicamente lui immagino che non crei nulla ... devo dargli in pancia io l'oggetto " Set Ogg = objFso.GetFile (path) " ?
    Dove Path è il mio file xls.

    Grazie !

    P.S. Reputazione messa e già avevo messo il mi piace su Face
    Il meglio deve ancora venire !

  6. #16
    Luogo
    BS / MI
    Post
    1,608
    Blogs
    33
    No, non puoi farlo in quel modo.

    Il codice Xml che avevo postato io è il codice che devi scrivere nel file di testo.
    Io non sono entrato nel merito del tuo codice ASP.
    Ti ho fatto l'esempio di un file di test .xls.
    Ossia come lo devi compilare tu, concatenando i tags con i dati veri e propri, e a questo proposito ti do un consiglio :
    cerca di separare nettamente i due processi :

    1. Crea una stringa in memoria.

    2. Leggi i dati e ad ogni ciclo di lettura formatti la riga e la accodi alla stringa preesistente,
    facendo attenzione di mettere un carriage return a fine riga ogni volta.

    3. Arriverai a fine lettura recordset e la tua stringa conterrà l'intero testo del file xls.

    4. A quel punto, e solo a quel punto, crei il tuo stream, butti tutta la stringa nel file e lo salvi con estensione .xls.

    Non è una cosa banale, ma neanche poi così difficile se ci pensi.
    Qui siamo praticamente in VB Script, quindi non posso, anche volendo, codificarti un esempio, perchè quanto avevo fatto io
    era in VB.NET.

    Se proprio non ne esci vivo vedo di farti io un piccolo esempio in VB6 ( mantenendo i tuoi oggetti ), ma a questo punto
    non garantisco sui tempi... Sono già abbastanza intrippato.

    Una cosa è chiara : si può fare. Su questo non devi avere dubbi.
    Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ]
    Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ]

+ Rispondi al Thread
Pagina 2 di 2 primaprima 12

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi