将Html表转换为Excel

我想在MVC中导出HTML表格excel。 我的控制器中有以下代码:

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

和jQuery中的follwing函数:

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

我想我想问的是如何将整个HTML表作为Control传递给JsonResult函数。 救命!

Json不是Excel支持的格式,因此您使用的是错误的ActionResult。

而是尝试将Excel文件创建为HTML表格或CSV文件。 我建议导出CSV文件,因为它可能是最容易构建的。

此外,您可以使用Excel文件来构建Excel文件。 这是一对夫妇。 http://e-infotainment.com/applications/csharp-excel-library/ http://code.google.com/p/excellibrary/

构建CSV后,您可以像使用ContentResult(而不是json)一样返回CSV。

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

或者,如果您使用库创建了一个excel文件,则可以使用FileResult(而不是json)返回它

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

在任何一种情况下,您都不需要ajax调用来加载内容,只需链接到它并在新窗口中打开它。

  Your Text