【问题标题】:Export to Function which is called using Json is not exporting data in excel format使用 Json 调用的导出到函数未以 excel 格式导出数据
【发布时间】:2014-01-29 20:10:35
【问题描述】:

您好,我正在使用 json 调用一个函数,该函数调用另一个函数,该函数最终调用 ExpotToExcel 函数。功能如下

$.ajax({
                type: "post",
                contentType: "application/json;charset=utf-8",
               // dataType: "json",
                url: "Model/Services/CurrentHistoryService.asmx/TestingExport",
                data: JSON.stringify(empno),
                success: function (resp) {
                    if (!(resp == null)) {
                        $('#ExportEmpInfo').empty();
                        $('#ExportEmpInfo').append('<p><b>' + 'Data Has been Exported to Excel successfully ' + '</b></p>');
                    }
                    else {

                        $('#ExportEmpInfo').empty();
                        $('#ExportEmpInfo').append('<p><b>' + 'Exporting to Excel Failed' + '</b></p>');

                    }


                },
                error: function (jqXHR, textStatus, errorThrown) {
                    alert('TextStatus:' + textStatus + ' errorThrown: ' + errorThrown);
                }
            })

网络方法:

[WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public void TestingExport(string empNo)
        {
            RefEmployeeRepository emply = new RefEmployeeRepository();
            List<RefEmployee> empcurlist = emply.GetEmployeeCurrentByEMPNO(empNo);

            DataTable dt = new DataTable();
            dt = ToDataTable(empcurlist);
            string title = "Customer Current Information";
            ReferenceDataLogic.GenerateExcelReport(title, dt);

        }

生成Excel报表函数:

public static void GenerateExcelReport(string value, DataTable localTable)
        {
            DataSet ds = new DataSet();    
            DataTable dtHeader = new DataTable();
            dtHeader.Columns.Add(new DataColumn(value));
            DataTable dtBlankRow = new DataTable();
            dtBlankRow.Columns.Add(new DataColumn(" "));
            ds.Tables.Add(dtHeader);
            ds.Tables.Add(dtBlankRow);
            ds.Tables.Add(localTable);

            HelperFunctions.ExportToExcel(HttpContext.Current.Response, ds);
        }

ExportToExcel 函数:

 public static void ExportToExcel(HttpResponse response, DataSet ds)
        {
            try
            {
                response.Clear();
                response.ClearContent();
                response.Charset = "";
                response.ContentType = "application/vnd.ms-excel";

                DataGrid dg = new DataGrid();

                for (int i = 0; i < ds.Tables.Count; i++)
                {

                    StringWriter stringWriter = new StringWriter();

                    HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(stringWriter);

                    stringWriter = new System.IO.StringWriter();
                    htmlWriter = new System.Web.UI.HtmlTextWriter(stringWriter);
                    dg.DataSource = ds.Tables[i];
                    dg.DataBind();
                    dg.RenderControl(htmlWriter);
                    response.Write(stringWriter.ToString());
                }
                response.Flush();
                response.Close();
                response.Write("");

            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
            }
        }

控件正在执行所有这些函数,但在执行最后一个导出到 Excel 函数后,它没有生成 Excel 文件。但是,如果我通过直接使用方法后面的另一个代码而不是使用 json 来调用间接调用此方法的 web 方法来调用此函数,那么我将得到 Excel 表。请帮我解决这个问题,为什么在没有错误的情况下执行函数后没有生成 excel 表。

【问题讨论】:

    标签: jquery asp.net json c#-4.0 export-to-excel


    【解决方案1】:

    经过大量研究,我发现我们无法使用 Json 格式调用 ExportToExcel 功能,因为返回的响应与预期的响应 json 之间存在冲突。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2011-06-04
      • 2016-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多