转换HTML表格到Excel(Convert Html Table to Excel)

2019-10-28 22:27发布

我想导出HTML表MVC脱颖而出。 我在我的控制器下面的代码:

  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表格传递给JsonResult功能的控制 。 救命!

Answer 1:

JSON是不是被用Excel支持的格式,让你在使用了错误的ActionResult。

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

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

你已经构建了您的CSV后,您可以返回CSV作为与ContentResult类型(而不是JSON)。

    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调用加载的内容,只是链接到它,并在新窗口中打开它。

<a href="/Controller/MakeExcelFile" target="ExcelFile"> Your Text </a>


文章来源: Convert Html Table to Excel