Torna al Thread

using System; using System.Collections.Generic; using System.Linq; using System.Net.Mime; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebGenericHandlers { public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void btnShowFile_OnClick(object sender, EventArgs e) { // qui ci va la tua logica di generazione file // quando hai creato il file su disco lo puoi ritornare al client chiamando il metodo: ResponseFile("~/Book1.xls"); /* * chiaramente quello è per farti vedere un esempio con un excel fisso, * dal momento in cui devi creare il file dinamicamente, * devi pensare che può essere chiamato da più utenti contemporaneamente * e quindi devi generale un file con un nome univoco tutte le volte. * Puoi utilizzare i metodi descritti qui per avere un file temporaneo univoco: * http://msdn.microsoft.com/it-it/library/system.io.path.gettempfilename.aspx * http://msdn.microsoft.com/it-it/library/system.io.path.getrandomfilename.aspx * la differenza tra i due è spiegata nei link. * * questo metodo è per venire in contro al fatto che forse sei costretto a creare * un file per forza, ma se l'oggetto excel che stai utilizzando supporta anche * la scrittura del file su uno stream, sarebbe meglio, così eviti di scrivere * su disco, e quindi le operazioni sono più veloci e non rischi di avere un * collo di bottiglia sulle performance dei dischi, ma lavori solo in memoria; * però lascio a te il compito di convertirlo con una gestione in memoria senza * scrivere su file lasciandoti due indizi: * Response.BinaryWrite(); http://www.dotnetperls.com/response-binarywrite * MemoryStream http://msdn.microsoft.com/it-it/library/system.io.memorystream(v=vs.80).aspx */ } private void ResponseFile(string filename) { Response.Clear(); var cd = new ContentDisposition(); cd.FileName = "TheAmazingExcelFile.xls"; // questo dovrebbe aprire il programma automaticamente se ci riesce, ma forse con excel non funziona, per i PDF è così che si fa per farglieli aprire nel browser, però almeno explorer se ne accorge e ti fa un bel popup grande chiedentoti conferma se vuoi aprirlo con excel cd.Inline = true; Response.AddHeader("Content-Disposition", cd.ToString()); Response.ContentType = "application/excel"; Response.WriteFile(filename); Response.End(); } } }
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5