首頁 >後端開發 >C++ >如何在沒有頁面重新加載的MVC中使用AJAX遠程下載Excel文件?

如何在沒有頁面重新加載的MVC中使用AJAX遠程下載Excel文件?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-29 00:18:09278瀏覽

How Can I Download Excel Files Remotely Using AJAX in MVC Without Page Reloads?

>遠程excel文件在MVC中使用AJAX下載:無縫方法

> MVC中的廣泛表格通常需要從特定表單數據生成Excel文件。 本文演示瞭如何使用Ajax有效地實現此目的,避免了完整的頁面刷新。

>

ajax文件下載挑戰 >直接通過AJAX下載文件是不可行的。 我們需要一個解決方法。

>

解決方案:服務器端文件生成和AJAX數據傳輸

> 該解決方案涉及使用Ajax將表單數據發送到服務器。 服務器端代碼(例如,使用epplus或npoi)創建Excel文件。 然後將文件臨時存儲為字節數組,並將引用返回給客戶端。 隨後的重定向會觸發實際下載。

字節數組存儲和參考傳遞>

>生成的Excel文件存儲在tempdata容器中,通過唯一參考標識。此引用(與文件名一起)作為JSON發送回AJAX函數。 然後,Ajax函數將重定向到單獨的控制器操作,以從tempdata檢索文件並啟動下載。

>逐步實現

1。文件生成的控制器操作:

此操作接收表單數據,使用epplus之類的庫生成excel文件,將其存儲在tempdata中作為字節數組,然後返回包含唯一標識符和文件名的JSON對象。

<code class="language-csharp">public ActionResult PostReportPartial(ReportVM model)
{
    // Generate Excel file using EPPlus or NPOI
    ExcelPackage workbook = new ExcelPackage();
    // ... file generation logic ...

    // Store file in TempData
    string handle = Guid.NewGuid().ToString();
    TempData[handle] = workbook.GetAsByteArray();

    return Json(new { FileGuid = handle, Filename = "ReportOutput.xlsx" });
}</code>
2。 AJAX調用和重定向:

ajax調用將表單數據發送到操作。 成功響應後,它將其重定向到另一個控制器操作以處理下載。

>

PostReportPartial

3。文件的控制器操作下載:
<code class="language-javascript">$.ajax({
    // ... AJAX settings ...
    success: function (response) {
        window.location = '/Report/Download?fileGuid=' + response.FileGuid + '&filename=' + response.Filename;
    }
});</code>

此操作使用唯一標識符從tempdata檢索文件,並將其發送給客戶端以供下載。

此方法可確保無需頁面重新加載的高效,用戶友好的Excel文件下載,利用服務器端處理以獲得最佳性能。 沒有永久存儲在服務器上的物理文件。

>

以上是如何在沒有頁面重新加載的MVC中使用AJAX遠程下載Excel文件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn