0

我试图让我的页面 Data.aspx 返回一个 html 表,但我希望该表采用 excel 格式。到目前为止,这是我的代码。

在 Data.aspx 中加载:

响应.清除()

    Select Case lstrCmd
        Case "summary"
            Response.Write(Summary())
            Response.Cache.SetCacheability(HttpCacheability.NoCache)
        Case "export"
            Response.ContentType = "application/ms-excel"
            Response.AddHeader("Content-Disposition", "attachment;filename=" & _
                    mstrProjectName & ".xls")
            Response.Write(SummaryExport())
    End Select

    Response.End()

所以添加标题是我感到困惑的地方。这是我的软件的另一个用途,但我不确定它是否会起作用..

调用它的 jquery 使用 ajax:

     function btnSubmitExport_Click() {
        var compID = $("#ddlCompanies").val();
        var projectID = $("#ddlProjects").val();
        var startDate = $("#txtStartDate").val();
        var endDate = $("#txtEndDate").val();
        var compName = $("#ddlCompanies :selected").text();
        var projectName = $("#ddlProjects :selected").text();
        $("#content").html("<div class='loading'>loading...</div>");

        $.ajax({
            url:        "Data.aspx",
            data:       {
                            CompanyID:  compID,
                            ProjectID:  projectID,
                            CompanyName: compName,
                            ProjectName: projectName,
                            StartDate:  startDate,
                            EndDate:    endDate,
                            Cmd:        "export"
                        },                
            success:    function(html) {
                             $("#content").html(html);       
                        },
            error:      function(response) {
                    alert(response);
            }
        });
     }

因此,通常,当我请求此数据时,我只是将生成的 html 放入我的 default.aspx 页面上的“内容”div 中。但我希望该 html 成为一个 excel 文件!

对此的任何提示或想法都会有所帮助。

我在其他地方看到了同样的问题,但没有任何答案可以帮助我使用现有代码..

4

2 回答 2

1

如果您的 html 文本中包含 Table 标签,只需使用 XLS 扩展名保存它,Microsoft Excel 就会像魅力一样打开它!而且正如我所见,您希望用户下载文件,而不是在页面中显示其内容。您应该直接在 ASPX 页面上重定向页面(不使用 JQuery)。我建议您在开发人员工具中使用网络监视器来查看发生了什么。

干杯

于 2012-09-07T17:13:27.907 回答
0

通常,您需要使用此标头

Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader "Content-Disposition", "filename=excelfile.xls"

在此特定页面中根据需要打印所有输出,就是这样。研究这些标题,你会没事的。

于 2012-09-07T17:47:24.690 回答