Как мне создать файл Excel, используя JQuery Ajax? - PullRequest
0 голосов
/ 02 апреля 2019

Я использую ExcelLibrary для создания файла Excel, он работает, если я использую ActionResult в обычном режиме. Проблема в том, что я хочу отправить некоторые параметры с помощью Ajax, и он создает и загружает файл, но я не знаю, как это сделать.

Как я мог это сделать?

JsonResult, создающий файл excel

public JsonResult createExcelFile(String dados){
            try{

                List<SimulacaoPrevisaoModel> json = JsonConvert.DeserializeObject<List<SimulacaoPrevisaoModel>>(dados);

                DataSet ds = new DataSet("New_DataSet");

                DataTable dt = new DataTable("Teste1");
                dt.Columns.Add("Dia");
                dt.Columns.Add("Data");
                dt.Columns.Add("Aporte($)");
                dt.Columns.Add("Meta(%)");
                dt.Columns.Add("Meta($)");
                dt.Columns.Add("Lucro($)");

                int index = 1;
                foreach (SimulacaoPrevisaoModel x in json)
                {
                    dt.Rows.Add(index, x.data, x.aporte, x.porcentagem, x.metaReal, x.lucro);
                    index++;
                }               

                ds.Tables.Add(dt);

                MemoryStream stream = new MemoryStream();
                ExcelLibrary.DataSetHelper.CreateWorkbook(stream, ds);

                Response.Clear();
                Response.ContentType = "application/vnd.ms-excel";
                Response.AddHeader("content-disposition", string.Format("attachment;filename=Simulação_{0}.xls", DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss")));

                stream.WriteTo(Response.OutputStream);

                Response.End();

                jsonResposta.Add("status", "1");
                jsonResposta.Add("msg", "Arquivo XLS gerado com sucesso!");

            }catch(Exception e) {
                jsonResposta.Add("status", "0");
                jsonResposta.Add("msg", "Erro gerando XLS: " + e.Message);
                Debug.WriteLine("Erro gerando XLS: " + e.Message);
            }

            return Json(jsonResposta);
        }

Ajax

//create a xls file
function createXLS() {    

    var loading = $("#div_loading");
    $(document).ajaxStart(function () {
        loading.show();
    });
    $(document).ajaxStop(function () {
        loading.hide();
    });

    $.ajax({
        accepts: { json: 'application/json' },
        dataType: 'json',
        type: "POST",
        url: "/Trade/createExcelFile",
        data: { 'dados[]' : JSON.stringify(lista) },
        success: function (data) {
            var status = data["status"];
            var msg = data["msg"];
            if (status === "1") {               
                $("#errorMessage").html(msg);
                $("#errorMessage").prop("class", "alert alert-success");               
            } else {
                $("#errorMessage").html(msg);
                $("#errorMessage").prop("class", "alert alert-danger");
            }
            $("#errorMessage").show()
            window.scrollTo(0, 0);
        },
        error: function (xhr, status) {
            $("#errorMessage").html("Erro");
            $("#errorMessage").prop("class", "alert alert-danger");
            $("#errorMessage").show()
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...