Comment enregistrer le fichier Excel créé sur le PC client dans ASP.NET

Je crée un rapport Excel et un rapport HTML dans asp.net lorsque je clique sur le bouton et que mon application le crée et l’enregistre sur le bureau du client, mais il ne fonctionne pas correctement car un fichier Excel est créé sur le bureau du serveur. Comment puis-je résoudre ce problème?

Merci pour votre réponse.

ssortingng CurrentDate; DateTime saveNow = DateTime.Now; CurrentDate = saveNow.Date.ToShortDateSsortingng(); ssortingng reportContent = prepareHTM(); ssortingng pathFile = Environment.GetFolderPath(Environment.SpecialFolder.CommonDesktopDirectory) + "\\As_Build_Report_ "+ CurrentDate + ".html"; using (StreamWriter outfile = new StreamWriter(pathFile, true)) { outfile.WriteLine(reportContent); } System.Diagnostics.Process.Start(pathFile); 

 object missing = System.Reflection.Missing.Value; //Start Excel Application. Excel.Application oXL = new Excel.Application(); oXL.Visible = true; //display Application . Excel._Workbook oWB = (Excel._Workbook)(oXL.Workbooks.Add(missing));//create a new workbook. Excel._Worksheet oSheet = (Excel._Worksheet)oWB.ActiveSheet; //create a sheet ssortingng CurrentDate; DateTime saveNow = DateTime.Now; CurrentDate = saveNow.Date.ToSsortingng(); int keep = 5; ssortingng project = list[0].Project; oSheet.Cells[1, 3] = "MiKES Configuration Management __" + project + "__ As-Built Report"; oSheet.Cells[3, 1] = "Report Date :"; oSheet.Cells[3, 2] = CurrentDate; oSheet.Cells[keep, 1] = "PART NO"; oSheet.Cells[keep, 2] = "REF.DES."; oSheet.Cells[keep, 3] = "DESCRIPTION"; oSheet.Cells[keep, 4] = "SERIAL NO"; oSheet.Cells[keep, 5] = "C/S"; oSheet.Cells[keep, 6] = "D/C"; oSheet.Cells[keep, 7] = "REMARK"; keep++; foreach(Classes.CMNewPart item in list) { try { oSheet.Cells[keep, 1] = item.PartNo; oSheet.Cells[keep, 2] = item.RefDes; oSheet.Cells[keep, 3] = item.Description1; oSheet.Cells[keep, 4] = item.SerialNo; oSheet.Cells[keep, 5] = item.Cs; oSheet.Cells[keep, 6] = item.Dc; oSheet.Cells[keep, 7] = item.Remark; } catch (Exception) { } keep++; } 

Vous devez envoyer le fichier au client à l’aide de l’object Response. Pour ignorer le message d’avertissement comme lorsque le client ouvre le fichier Excel –

entrez la description de l'image ici

Pour éviter cela, vous devez mentionner le type de contenu et la longueur dans la réponse. Utilisez l’exemple de code.

 //Read the Excel file in a byte array. here pck is the Excelworkbook Byte[] fileBytes = pck.GetAsByteArray(); //Clear the response Response.Clear(); Response.ClearContent(); Response.ClearHeaders(); Response.Cookies.Clear(); //Add the header & other information Response.Cache.SetCacheability(HttpCacheability.Private); Response.CacheControl = "private"; Response.Charset = System.Text.UTF8Encoding.UTF8.WebName; Response.ContentEncoding = System.Text.UTF8Encoding.UTF8; Response.AppendHeader("Content-Length", fileBytes.Length.ToSsortingng()); Response.AppendHeader("Pragma", "cache"); Response.AppendHeader("Expires", "60"); Response.AppendHeader("Content-Disposition", "attachment; " + "filename=\"ExcelReport.xlsx\"; " + "size=" + fileBytes.Length.ToSsortingng() + "; " + "creation-date=" + DateTime.Now.ToSsortingng("R") + "; " + "modification-date=" + DateTime.Now.ToSsortingng("R") + "; " + "read-date=" + DateTime.Now.ToSsortingng("R")); Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; //Write it back to the client Response.BinaryWrite(fileBytes); Response.End(); 

Vous pouvez écrire un fichier excel dans la réponse HttpResponse.WriteFile, méthode

 ssortingng CurrentDate; DateTime saveNow = DateTime.Now; CurrentDate = saveNow.Date.ToShortDateSsortingng(); ssortingng reportContent = prepareHTM(); ssortingng pathFile = Environment.GetFolderPath(Environment.SpecialFolder.CommonDesktopDirectory) + "\\As_Build_Report_ "+ CurrentDate + ".html"; using (StreamWriter outfile = new StreamWriter(pathFile, true)) { outfile.WriteLine(reportContent); } System.IO.FileInfo file = new System.IO.FileInfo(pathFile); Response.Clear(); Response.Charset="UTF-8"; Response.ContentEncoding=System.Text.Encoding.UTF8; Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name); Response.AddHeader("Content-Length", file.Length.ToSsortingng()); Response.ContentType = "application/ms-excel"; Response.WriteFile(file.FullName); Response.End(); 

Une chose importante à noter pour que la meilleure réponse choisie fonctionne pour vous:
Vous devez utiliser pour utiliser une bibliothèque différente de celle de Microsoft.Office.Interop.Excel implicite dans la question. Vous devez utiliser EPPlus. Voici comment vous l’installez dans votre projet:

  1. Dans la console du gestionnaire de packages de Visual Studio, tapez: Install-Package EPPlus (cela installera la bibliothèque et la référence si nécessaire)
  2. Ajouter cette instruction using ( using OfficeOpenXml; )

Et voici un exemple de code permettant de créer le package Excel (pck), comme indiqué dans la meilleure réponse:

  ExcelPackage pck = new ExcelPackage(); ExcelWorksheet ws = pck.Workbook.Worksheets.Add("exported data"); // Excel sheet headings ws.Cells[1, 1].Value = "Column 1 title"; ws.Cells[1, 2].Value = "Column 2 title"; 

Maintenant, vous pouvez utiliser le code fourni dans la meilleure réponse.

Vous ne pouvez pas l’enregistrer directement dans un emplacement spécifique du client. Ce que vous pouvez faire, c’est renvoyer le fichier avec cette demande de sorte qu’une fenêtre de dialog “Enregistrer le fichier” apparaisse du côté du navigateur.