Rumah >pembangunan bahagian belakang >C++ >Bagaimana saya boleh memuat turun fail excel dari jauh menggunakan Ajax dalam MVC tanpa memuat semula halaman?

Bagaimana saya boleh memuat turun fail excel dari jauh menggunakan Ajax dalam MVC tanpa memuat semula halaman?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-29 00:18:09279semak imbas

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

muat turun fail excel jauh di MVC menggunakan AJAX: Pendekatan Lancar

Mengendalikan bentuk yang luas di MVC sering memerlukan menjana fail Excel dari data bentuk tertentu. Artikel ini menunjukkan bagaimana untuk mencapai ini dengan cekap menggunakan Ajax, mengelakkan penyegaran halaman lengkap.

Cabaran muat turun fail ajax

secara langsung memuat turun fail melalui Ajax tidak boleh dilaksanakan. Kita memerlukan penyelesaian.

Penyelesaian: Penjanaan fail sisi pelayan dan pemindahan data Ajax

Penyelesaian ini melibatkan penggunaan AJAX untuk menghantar data borang ke pelayan. Kod sisi pelayan (mis., Menggunakan Epplus atau NPOI) mencipta fail Excel. Fail tersebut kemudian disimpan sementara sebagai array byte, dan rujukan dikembalikan kepada pelanggan. Redirect berikutnya mencetuskan muat turun sebenar.

penyimpanan array byte dan lulus rujukan

Fail Excel yang dihasilkan disimpan sebagai array byte dalam bekas Tempdata, yang dikenal pasti dengan rujukan unik. Rujukan ini (bersama dengan nama fail) dihantar kembali sebagai JSON ke fungsi AJAX. Fungsi AJAX kemudian mengalihkan ke tindakan pengawal berasingan untuk mengambil fail dari tempData dan memulakan muat turun.

Pelaksanaan langkah demi langkah

1. Tindakan pengawal untuk penjanaan fail:

Tindakan ini menerima data borang, menghasilkan fail Excel menggunakan perpustakaan seperti Epplus, menyimpannya dalam tempData sebagai array byte, dan mengembalikan objek JSON yang mengandungi pengenal yang unik dan nama fail.

<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. Panggilan dan Pengalihan Ajax:

Panggilan Ajax menghantar data borang ke tindakan

. Setelah respons yang berjaya, ia mengalihkan ke tindakan pengawal lain untuk mengendalikan muat turun. PostReportPartial

<code class="language-javascript">$.ajax({
    // ... AJAX settings ...
    success: function (response) {
        window.location = '/Report/Download?fileGuid=' + response.FileGuid + '&filename=' + response.Filename;
    }
});</code>

3. Tindakan pengawal untuk muat turun fail:

Tindakan ini mengambil fail dari tempData menggunakan pengenal unik, dan menghantarnya kepada pelanggan untuk dimuat turun.

<code class="language-csharp">[HttpGet]
public ActionResult Download(string fileGuid, string fileName)
{
    if (TempData[fileGuid] != null)
    {
        byte[] data = TempData[fileGuid] as byte[];
        return File(data, "application/vnd.ms-excel", fileName);
    }
    else
    {
        return new EmptyResult();
    }
}</code>
Kaedah ini memastikan muat turun fail Excel yang cekap, mesra pengguna tanpa memuat semula halaman, memanfaatkan pemprosesan sisi pelayan untuk prestasi optimum. Tiada fail fizikal disimpan secara kekal di pelayan.

Atas ialah kandungan terperinci Bagaimana saya boleh memuat turun fail excel dari jauh menggunakan Ajax dalam MVC tanpa memuat semula halaman?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn