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";
});


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM