Come generare un file Excel * .xls dal classico ASP

Ho un numero di tabelle html generate che ho bisogno di produrre come file Excel. Il sito è codificato in ASP classico. È ansible? Potrebbe essere fatto usando in qualche modo le librerie Open Office?


EDIT: Finora, ho provato alcuni dei suggerimenti, ma sembra fallire. Idealmente, voglio che l’utente sia in grado di fare clic su un collegamento che inizierà il download di un file .xls. Questo codice:

  
Test Col 1 Test Col 2 Test Col 3 Test Col 4 Test Col 6 Test Col 7
Data Data Data Data Data Data Data

sembra fallire quando IE7 viene usato per ottenere la pagina. IE afferma che “imansible scaricare excelTest.asp” e che “Il sito richiesto non è disponibile o non può essere trovato.”

È AddHeader, non AppendHeader.

 <%@ Language=VBScript %> <% Option Explicit Response.ContentType = "application/vnd.ms-excel" Response.AddHeader "Content-Disposition", "attachment; filename=excelTest.xls" %> 
Test

Aggiornamento: ho scritto un post sul blog su come generare file Excel in ASP Classic . Contiene una porzione di codice piuttosto utile per generare file sia xls che csv.

MS ha creato una libreria COM chiamata Office Web Components per fare ciò. MSOWC.dll deve essere registrato sul server. Può creare e manipolare file di documenti di Office.

Come utilizzare il componente Web foglio di calcolo con Visual Basic

Lavorare con Office Web Components

C’è un trucco ‘economico e sporco’ che ho usato … shhhh non dirlo a nessuno. Se si stampa il testo delimitato da tabulazione e si effettua il nome del file * .xls, Excel lo apre senza obiezioni, domande o avvisi. Quindi sposta i dati in un file di testo con delimitazione di tabulazione e puoi aprirlo con Excel o Open Office.

È necessario specificare il file da scaricare (allegato) dal client nell’intestazione http:

 Response.ContentType = "application/vnd.ms-excel" Response.AppendHeader "content-disposition", "attachment: filename=excelTest.xls" 

http://classicasp.aspfaq.com/general/how-do-i-prompt-a-save-as-dialog-for-an-accepted-mime-type.html

Puoi sempre esportare la tabella HTML in un documento XLS. Excel fa un buon lavoro capendo le tabelle HTML.

Un altro ansible è esportare le tabelle HTML come file CSV o TSV, ma è necessario impostare la formattazione nel codice. Questo non è troppo difficile da realizzare.

Ci sono alcune classi in Microsoft.Office.Interop che ti permettono di creare un file Excel in modo programmatico, ma ho sempre trovato che siano un po ‘goffi. Puoi trovare una versione .NET di creare un foglio di calcolo qui , che dovrebbe essere abbastanza facile da modificare per ASP classico.

Per quanto riguarda .NET, mi è sempre piaciuta l’Excel XML Writer Library di CarlosAG . Ha un bel generatore in modo da poter impostare il file Excel, salvarlo come foglio di calcolo XML e generare il codice per fare tutta la formattazione e tutto il resto. So che non è ASP classico, ma ho pensato che l’avrei buttato lì fuori.


Con quello che stai provando sopra, prova ad aggiungere l’intestazione:

 "Content-Disposition", "attachment; filename=excelTest.xls" 

Vedi se funziona. Inoltre, lo uso sempre per il tipo di contenuto:

  Response.ContentType = "application/octet-stream" Response.ContentType = "application/vnd.ms-excel" 

Ho avuto lo stesso problema fino a quando ho aggiunto Response.Buffer = False. Prova a cambiare il codice al seguente.

Response.Buffer = False Response.ContentType = “application / vnd.ms-excel” Response.AddHeader “Content-Disposition”, “attachment; filename = excelTest.xls”

L’unico problema che ho ora è che quando Excel apre il file ottengo il seguente messaggio.

Il file che stai tentando di aprire, ‘FileName [1] .xls’, è in un formato diverso da quello specificato dall’estensione del file. Verificare che il file non sia danneggiato e provenga da una fonte attendibile prima di aprire il file. Vuoi aprire il file ora?

Quando apri il file, tutti i dati vengono visualizzati in colonne separate, ma il foglio di calcolo è tutto bianco, senza bordi tra le celle.

Spero possa aiutare.