Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在asp.net MVC2中将html表格导出到excel_C#_Jquery_Ajax_Asp.net Mvc 2_Export To Excel - Fatal编程技术网

C# 在asp.net MVC2中将html表格导出到excel

C# 在asp.net MVC2中将html表格导出到excel,c#,jquery,ajax,asp.net-mvc-2,export-to-excel,C#,Jquery,Ajax,Asp.net Mvc 2,Export To Excel,您好,我正在寻找如何在ASP.NET MVC中导出到excel的最佳方法 现在我从billsternberger.net上得到了这个 但是它向我抛出了一个潜在危险的请求。从客户端检测到表单值 它是如何在MVC上完成的?我已经在寻找一些类似的主题,但它总是让我想到我的第一个工作样本 感谢您的支持,最简单的解决方案是将HTML表导出为CSV文件并发送到服务器。让我们举个例子。假设我们已经定义了一个视图模型: public class ExportViewModel { [AllowHtml

您好,我正在寻找如何在ASP.NET MVC中导出到excel的最佳方法

现在我从billsternberger.net上得到了这个

但是它向我抛出了一个潜在危险的请求。从客户端检测到表单值

它是如何在MVC上完成的?我已经在寻找一些类似的主题,但它总是让我想到我的第一个工作样本


感谢您的支持,最简单的解决方案是将HTML表导出为CSV文件并发送到服务器。让我们举个例子。假设我们已经定义了一个视图模型:

public class ExportViewModel
{
    [AllowHtml]
    public string Csv { get; set; }
}
以及控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(new ExportViewModel());
    }

    [HttpPost]
    public ActionResult Export(ExportViewModel model)
    {
        var cd = new ContentDisposition
        {
            FileName = "YourFileName.csv",
            Inline = false
        };
        Response.AddHeader("Content-Disposition", cd.ToString());
        return Content(model.Csv, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
    }
}
现在在相应的视图中,我们假设我们已经生成了一些
(这个表的生成方式在这里并不有趣):

@model ExportViewModel
身份证件
名称
1.
福
2.
酒吧
@使用(Html.BeginForm(“Export”,null,FormMethod.Post,new{id=“Export”}))
{
@Html.HiddenFor(x=>x.Csv)
输出到Excel
}
$('#导出')。提交(函数(){
$('#Csv').val($('#myTable').table2CSV({delivery:'value'}));
});
我们正在使用将HTML表转换为CSV格式。在表单提交到服务器之前,生成的CSV将存储在一个隐藏字段中


如果要构建本机XLSX文件,必须在服务器上使用。您不能仅将HTML表转换为本机Excel文件。此解决方案将更难实施,因为您只需将数据发送到服务器,但它将允许您对生成的Excel文件进行更大的自定义。

对于此类错误,我们通常使用validateRequest=“false”控制器上的attr…尝试一下..您好@Darin Dimitrov im使用mvc2 AllowTML仅在mvc3以后的版本上可用...)好的,然后用属性装饰
导出
控制器操作。谢谢,它可以工作,但显示不正确。Id名称“1 Foo”2条,只有一行
public class ExportViewModel
{
    [AllowHtml]
    public string Csv { get; set; }
}
public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(new ExportViewModel());
    }

    [HttpPost]
    public ActionResult Export(ExportViewModel model)
    {
        var cd = new ContentDisposition
        {
            FileName = "YourFileName.csv",
            Inline = false
        };
        Response.AddHeader("Content-Disposition", cd.ToString());
        return Content(model.Csv, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
    }
}
@model ExportViewModel

<table id="myTable">
    <thead>
        <tr>
            <th>Id</th>
            <th>Name</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1</td>
            <td>Foo</td>
        </tr>
        <tr>
            <td>2</td>
            <td>Bar</td>
        </tr>
    </tbody>
</table>

@using (Html.BeginForm("Export", null, FormMethod.Post, new { id = "export" }))
{
    @Html.HiddenFor(x => x.Csv)
    <button type="submit">Export to Excel</button>
}

<script type="text/javascript" src="http://www.kunalbabre.com/projects/table2CSV.js"></script>
<script type="text/javascript">
    $('#export').submit(function () {
        $('#Csv').val($('#myTable').table2CSV({ delivery: 'value' }));
    });
</script>