首页 > 解决方案 > 如何使用 Ajax 从 ASP.net MVC 中的 DataTable 导出 CSV 文件?

问题描述

我有一种生成 CSV 的方法,如下所示

public ActionResult ExportToExcel(SampleRequest Sprequest)
        {

            var viewModel = new SummaryModel();
            DataSet ds = new DataSet();
            DataTable dt = new DataTable();
            ds = getGridList(Sprequest);
            dt = ds.Tables[1];

            Response.Clear();
            Response.ContentType = "text/csv";
            Response.AddHeader("content-disposition", "attachment;filename = Customers.csv");

            StringBuilder sb = new StringBuilder();

            for (int i = 0; i < dt.Columns.Count; i++)
            {
                sb.Append(dt.Columns[i].ColumnName + ',');
            }
            sb.Append(Environment.NewLine);
            for (int j = 0; j < dt.Rows.Count; j++)
            {
                for (int k = 0; k < dt.Columns.Count; k++)
                {
                    sb.Append(dt.Rows[j][k].ToString() + ',');
                }
                sb.Append(Environment.NewLine);
            }
  
            Response.Write(sb.ToString());
            Response.End();


        }

和按钮代码如下


 <input type="button" value="Export To Excel" id="excelbutton" class="btn" style="width:110px;height:29px;background-color:#3498db;color:white;font-size: 0.89em;" />

javascript代码如下

$(document).on('click', '#excelbutton', function () {

                ExportToExcel();
            })

function ExportToExcel(pageNumber, isPagination) {
                var gcModel = {
                    FromGiven: $('#dateFromGiven').val(),
                    ToGiven: $('#dateToGiven').val(),
                    FromTaken: $('#dateFromTaken').val(),
                    ToTaken: $('#dateToTaken').val(),
                    FromCardno: $('#FromCard').val(),
                    ToCardNo: $('#ToCard').val(),
                    
                    PageNumber: pageNumber ? pageNumber : 0
                };
                $.ajax({
                    url: "/GiftCard/ExportToExcel",
                    type: 'POST',
                    contentType: 'application/json',
                    data: JSON.stringify(gcModel) ,
                   // data: { },
                    success: function (responce) {
                        

                    },
                    error: function () {

                    }
                                       
                })
            } 

On Button Click it is Going to the method 但 csv 没有被下载,我需要通过将所有参数(FromGiven、ToGiven)等作为 Sp 中的参数下载为 CSV 文件并下载 Csv。在使用操作链接上,该方法工作正常,但无法通过该方法传递 sql 参数,我希望通过将 HTML 控件值作为参数将数据下载到 CSV 文件中请帮助提前致谢...

标签: javascriptajaxasp.net-mvccsvexport-to-csv

解决方案


推荐阅读