參考:js 下載文件 前端 後臺 處理
TXTUrl必須是相對路徑,如果採用絕對路徑會報錯。
function downloadFile(TXTUrl) {
var SaveToolIframe = "<iframe class='onceSave' id='SaveIframe' style='display:none'src='" + TXTUrl + "'></iframe>";
if ($("#SaveIframe").length == 0) {
$("body").append(SaveToolIframe);
} else {
$("#SaveIframe")[0].src = TXTUrl;
}
var oFrm = document.getElementById('SaveIframe');
oFrm.onload = oFrm.onreadystatechange = function () {
if (this.readyState && this.readyState != 'complete') return;
else {
if ($(".onceSave").contents().attr("title").indexOf("404") >= 0)//文件未找到 根據404界面 標題確定錯誤
{
alert("沒有所下載的文件");
}
}
}
}
實例:下載easyUI中datagrid中數據到excel
let rows = $("#dataanagrid-content-dg").datagrid("getRows");
let bodyData = JSON.stringify(rows);
let postData = {
data: bodyData
};
$.ajax({
url: '/Search/ExportExcel',
type: "post",
data: postData,
success: function (data) {
downloadFile(data);
}
});
C#代碼
public string ExportExcel()
{
string json = Request.Params["data"];
DataTable dt = JsonToDataTable(json);
string excelname = System.DateTime.Now.ToString("yyyyMMddhhmmss");
List<ExportFieldParam> columns = new List<ExportFieldParam>();
if (dt.Columns.Contains("噪音數據"))
{
columns.Add(new ExportFieldParam("傳感器", "傳感器", 300));
columns.Add(new ExportFieldParam("時間", "時間", 150));
columns.Add(new ExportFieldParam("值", "值", 40));
columns.Add(new ExportFieldParam("單位", "單位", 40));
columns.Add(new ExportFieldParam("噪音數據", "噪音數據", 60));
}
else
{
columns.Add(new ExportFieldParam("傳感器", "傳感器", 300));
columns.Add(new ExportFieldParam("時間", "時間", 300));
columns.Add(new ExportFieldParam("值", "值", 40));
columns.Add(new ExportFieldParam("單位", "單位", 40));
}
string filePath = System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "/temp/" +"測站測計數據:"+ excelname + ".xls";
MemoryStream ms = RenderDataTableToExcel(dt, columns) as MemoryStream;
FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write);
byte[] data = ms.ToArray();
fs.Write(data, 0, data.Length);
fs.Flush();
fs.Close();
data = null;
ms = null;
fs = null;
return "/temp/" + "測站測計數據:" + excelname + ".xls";
}