asp.net ashx导出excel到前台

最近有一个项目使用以前的ashx,不能使用FileResult,只有通过response返回拼接好的字符串。但是通过查阅资料拼接的字符串总是提示文件格式不匹配,虽然能正常打开,但是体验很不好,在此总结一下我的解决方法:
直接下载excel会提示格式不相符,稍微修改,下载成csv的就没问题了

  • 后台:
/// <summary>  
/// DataTable导出到Excel  
/// </summary>  
/// <param name="dt">DataTable类型的数据源</param>  
/// <param name="FileType">文件类型</param>  
/// <param name="FileName">文件名</param>  
public void CreateExcel(HttpContext context, List<PB_SITE_BASIC> siteList, string FileName)
{
    //分割符
    string split = ",";

    HttpResponse Response = System.Web.HttpContext.Current.Response;
    Response.Clear();
    Response.Charset = "UTF-8";
    Response.Buffer = true;
    Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
    Response.AppendHeader("Content-Disposition", "attachment;filename=\"" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".csv\"");
    Response.ContentType = "application/ms-excel";
    string colHeaders = string.Empty;
    string ls_item = string.Empty;

    int i = 0;
    int cl = siteList.Count;

    //添加表头
    ls_item += "站点编号" + split;
    ls_item += "站点名称" + split;
    ls_item += "车桩总数" + split;
    ls_item += "基站地址" + split;
    ls_item += "所属区域" + split;
    ls_item += "站点地址" + split;
    ls_item += "站点纬度" + split;
    ls_item += "站点经度" + split;

    ls_item = ls_item.Substring(0, ls_item.Length - 1) + "\n";

    foreach (var site in siteList)
    {
        ls_item += site.SID.ToString() + split;
        ls_item += site.NAME.ToString() + split;
        ls_item += site.CAPACITY.ToString() + split;
        ls_item += site.BASESTATION_ID.ToString() + split;
        ls_item += site.REGION_ID.ToString() + split;
        ls_item += site.ADDRESS.ToString() + split;
        ls_item += site.LAT.ToString() + split;
        ls_item += site.LNG.ToString() + split;
        ls_item += "\n";

        Response.Output.Write(ls_item);
        ls_item = string.Empty;
    }
    Response.Output.Flush();
    Response.End();
}
  • 前台
//导出
$("#btExport").click(function () {
 window.location = "ExportSiteBasic.ashx";
});

转载于:https://www.cnblogs.com/birdofparadise/p/9087505.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值