加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 如何在Asp.Net MVC中导出到excel?

发布时间:2020-12-16 07:24:14 所属栏目:asp.Net 来源:网络整理
导读:脚本 function PostExportValues(meter_id,range_type_id,start_date,end_date,returnUrl) { var meter = $("#meter_selection").val()[0]; $.ajax({ url: '@Url.Action("GridExportToExcel","Widget")',type: 'POST',data: { MeterType: meter_id,DateRange
脚本

function PostExportValues(meter_id,range_type_id,start_date,end_date,returnUrl) {
    var meter = $("#meter_selection").val()[0];
    $.ajax({
        url: '@Url.Action("GridExportToExcel","Widget")',type: 'POST',data: { MeterType: meter_id,DateRangeType: range_type_id,StartDate: start_date,EndDate: end_date,returnUrl: returnUrl,Meter: meter },success: function () {
            alert("Success.");
        },error: function () {
            alert("Error!");
        }
    });   //end ajax
} //end PostExportValues

CONTROLLER

public void GridExportToExcel(int MeterType,int DateRangeType,DateTime? StartDate,DateTime? EndDate,string returnUrl,int Meter)
{
    Customers customer = CustomerManager.GetCustomer(WebSecurity.CurrentUserId);
    //if start date is null,then set it to another early date.
    DateTime startDate = DateTimeManager.GetStartDate(StartDate,DateRangeType,customer.sno);
    //if end date is null,then set to date time now.
    DateTime endDate = DateTimeManager.GetEndDate(EndDate,StartDate);

    IQueryable<MeterReadingsForChart> meterReadings = MeterReadingManager.GetCustomerMeterReadings(customer.sno,MeterType,Meter,startDate,endDate,DateTimeManager.GetTimeIntervalTypeById(DateRangeType)).AsQueryable(); // MeterReadingManager.GetCustomerTotalMeterReadings(customer.sno,DateTimeManager.GetTimeIntervalTypeById(DateRangeType)).AsQueryable();
    var table = MeterReadingManager.GetMeterReadingsPivot(meterReadings,MeterType);

    //table output some thing like following:
    //T1 T2 T3
    //10 20 25
    //13 23 21
    //15 26 27

    var grid = new GridView();
    grid.DataSource = table;
    grid.DataBind();

    Response.ClearContent();
    Response.AddHeader("content-disposition","attachment; filename=MyExcelFile.xls");

    Response.ContentType = "application/excel";
    StringWriter sw = new StringWriter();
    HtmlTextWriter htw = new HtmlTextWriter(sw);

    grid.RenderControl(htw);

    Response.Write(sw.ToString());
    Response.End();

    //return View("Index");
}

方法GridExportToExcel正在运行,脚本警报消息为Success.,但没有行动(没有任何反应).

我错过了什么?我希望excel文件自动下载.

谢谢…

解决方法

您无法在ajax查询上调用文件下载,因为浏览器不会触发文件下载.不要使用ajax调用你的控制器方法,你可以使用喜欢

window.open("url/Exporttoexcel?id=");

添加参数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读