将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