Convertir un tableau HTML en Excel

Je veux exporter un tableau HTML pour excel dans MVC. J’ai le code suivant dans mon contrôleur:

public JsonResult ExportToExcel(Control ctl) { Response.Clear(); Response.ContentType = "application/ms-excel"; Response.AddHeader("content-disposition", "attachment;filename=ExcelCopy.xls"); System.IO.SsortingngWriter sw = new System.IO.SsortingngWriter(); HtmlTextWriter hw = new HtmlTextWriter(sw); ctl.RenderControl(hw); Response.Write(sw.ToSsortingng()); Response.End(); return Json(1); } 

et la fonction suivante dans jQuery:

  function btnConvertToExcelClick() { var inputParamtrs={ ????????? } $.ajax({ type: "POST", url: "/Expenses/ExportToExcel", data: inputParamtrs, success: function (json) { } }); return false; } 

Je suppose que ce que j’essaie de demander, c’est comment passer tout le tableau HTML à la fonction JsonResult en tant que contrôle . Aidez-moi!

Json n’est pas un format pris en charge par Excel, vous utilisez donc le mauvais ActionResult.

Au lieu de cela, essayez de créer votre fichier Excel sous forme de tableau HTML ou de fichier CSV. Je recommande d’exporter un fichier CSV car c’est probablement le plus facile à construire.

De plus, vous pouvez utiliser une bibliothèque Excel pour construire un fichier Excel. Voici un couple. http://e-infotainment.com/applications/csharp-excel-library/ http://code.google.com/p/excellibrary/

Une fois votre fichier CSV construit, vous pouvez le renvoyer comme avec un ContentResult (au lieu de json).

  public ActionResult MakeExcelCSV() { ssortingng excelCSV = null; // consruct your CSV return Content(excelCSV, "application/ms-excel"); } 

Ou si vous avez créé un fichier Excel avec la bibliothèque, vous pouvez le renvoyer avec un FileResult (au lieu de json)

  public ActionResult MakeExcelFile() { Stream excelStream = null; // consruct your excel file return File(excelStream, "application/ms-excel", "myexcel.xlsx"); } 

Dans les deux cas, vous n’aurez pas besoin d’un appel ajax pour charger le contenu, il vous suffit de le lier et de l’ouvrir dans une nouvelle fenêtre.

  Your Text