MVC怎么下载Excel文件?asp.net mvc导出excel乱码

在 ASP.NET MVC 中下载 Excel 文件通常有几种常见方式,以下我将介绍 最常用且推荐 的两种方法:

  1. 使用 FileResult 直接返回字节数组或文件路径(适用于已生成的 Excel 文件)
  2. 使用 NPOI 或 EPPlus 动态生成 Excel 并返回(适用于从数据库数据动态生成)

✅ 方法一:返回已存在的 Excel 文件(最简单)

假设你的 Excel 文件已经保存在服务器某个路径下,/Content/Reports/report.xlsx

【2023年全网首套完整版教程】.NET5+NPOI操作Excel导入导出+序列化 | 附完整源码(.NET5/.NET6/.NET/NPOI)B0558
加载中
【2023年全网首套完整版教程】.NET5+NPOI操作Excel导入导出+序列化 | 附完整源码(.NET5/.NET6/.NET/NPOI)B0558

Controller 代码:

using System.IO;
using System.Web.Mvc;
public class DownloadController : Controller
{
    public ActionResult DownloadExcel()
    {
        string filePath = Server.MapPath("~/Content/Reports/report.xlsx");
        if (!System.IO.File.Exists(filePath))
        {
            return HttpNotFound();
        }
        // 返回文件下载
        return File(filePath, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "report.xlsx");
    }
}

前端链接:

<a href="@Url.Action("DownloadExcel", "Download")">下载 Excel</a>

✅ 方法二:动态生成 Excel 并返回(推荐用于数据导出)

使用 NPOI 库(免费、支持 .xlsx.xls)来动态生成 Excel 文件。

安装 NPOI NuGet 包

Install-Package NPOI

Controller 代码

using System;
using System.Collections.Generic;
using System.IO;
using System.Web.Mvc;
using

MVC怎么下载Excel文件?asp.net mvc导出excel乱码

NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; public class ExportController : Controller { public ActionResult ExportToExcel() { // 模拟数据 var dataList = new List<ExportData> { new ExportData { Name = "张三", Age = 25, City = "北京" }, new ExportData { Name = "李四", Age = 30, City = "上海" }, new ExportData { Name = "王五", Age = 28, City = "广州" } }; // 创建 Excel 工作簿 IWorkbook workbook = new XSSFWorkbook(); // .xlsx 格式 ISheet sheet = workbook.CreateSheet("数据表"); // 创建表头 IRow headerRow = sheet.CreateRow(0); headerRow.CreateCell(0).SetCellValue("姓名"); headerRow.CreateCell(1).SetCellValue("年龄"); headerRow.CreateCell(2).SetCellValue("城市"); // 填充数据 for (int i = 0; i < dataList.Count; i++) { IRow dataRow = sheet.CreateRow(i + 1); dataRow.CreateCell(0).SetCellValue(dataList[i].Name); dataRow.CreateCell(1).SetCellValue(dataList[i].Age); dataRow.CreateCell(2).SetCellValue(dataList[i].City); } // 将工作簿写入内存流 using (var memoryStream = new MemoryStream()) { workbook.Write(memoryStream); memoryStream.Position = 0; // 返回文件下载 return File( memoryStream.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "导出数据.xlsx" ); } } } // 数据模型 public class ExportData { public string Name { get; set; } public int Age { get; set; } public string City { get; set; } }

MVC怎么下载Excel文件?asp.net mvc导出excel乱码

前端链接:

<a href="@Url.Action("ExportToExcel", "Export")">导出 Excel</a>

✅ 方法三:使用 EPPlus(更强大的 Excel 操作库)

EPPlus 功能更强大,支持样式、图表等,但注意 EPPlus 5+ 需要商业许可证,4.x 版本免费。

安装:

Install-Package EPPlus -Version 4.5.3.3

Controller 代码:

using System;
using System.Collections.Generic;
using System.IO;
using System.Web.Mvc;
using OfficeOpenXml;
public class ExportController : Controller
{
    public ActionResult ExportWithEPPlus()
    {
        var dataList = new List<ExportData>
        {
            new ExportData { Name = "张三", Age = 25, City = "北京" },
            new ExportData { Name = "李四", Age = 30, City = "上海" },
            new ExportData { Name = "王五", Age = 28, City = "广州" }
        };
        // 设置 EPPlus 许可证上下文(必须)
        ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
        using (var package = new ExcelPackage())
        {
            var worksheet = package.Workbook.Worksheets.Add("数据表");
            // 写入表头
            worksheet.Cells[1, 1].Value = "姓名";
            worksheet.Cells[1, 2].Value = "年龄";
            worksheet.Cells[1, 3].Value = "城市";
            // 写入数据
            for (int i = 0; i < dataList.Count; i++)
            {
    

MVC怎么下载Excel文件?asp.net mvc导出excel乱码

worksheet.Cells[i + 2, 1].Value = dataList[i].Name; worksheet.Cells[i + 2, 2].Value = dataList[i].Age; worksheet.Cells[i + 2, 3].Value = dataList[i].City; } // 返回文件 var bytes = package.GetAsByteArray(); return File(bytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "导出数据.xlsx"); } } }

📌 注意事项

项目 说明
MIME 类型 .xlsx 使用 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
大文件处理 如果数据量很大,建议使用流式写入,避免内存溢出
中文文件名 确保文件名编码正确,必要时使用 HttpUtility.UrlEncode
权限问题 确保网站有权限读取服务器文件路径
NPOI vs EPPlus NPOI 免费且轻量;EPPlus 功能更强但需注意许可证

🎯 总结推荐

  • 简单文件下载 → 使用 File(filePath, mimeType, fileName)
  • 动态生成 Excel → 推荐使用 NPOI(免费、稳定)或 EPPlus(功能强大)
  • 大数据量 → 考虑使用 ClosedXML 或流式写入

如有具体场景(如从数据库导出、带样式、分页等),可以告诉我,我会提供更详细的代码示例。

首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/486074.html

(0)
Confluence Linux怎么安装?Confluence安装教程
上一篇 2026年7月12日 09:06
分布式数据库有哪些分类?分布式数据库分类及特点
下一篇 2026年7月12日 09:07

相关推荐

  • 便宜美国VPS哪家强?AkkoCloud美西CN2 GIA低至25元

    AkkoCloud美西CN2 GIA线路VPS凭借低至25元/月的极致性价比与500Mbps大带宽,是追求低延迟、高稳定性及跨境业务加速用户的理想选择,在云计算市场鱼龙混杂的今天,寻找一款既便宜又稳定的美国VPS并非易事,许多用户被低价吸引后,往往遭遇线路拥堵、丢包率高或售后响应慢等问题,AkkoCloud推出……

    2026年6月30日
    1210
  • 广州网络服务哪家好?广州企业网络服务怎么选

    2026年广州网络服务的核心价值在于通过AI驱动的全链路数字化运营与严格的合规标准,实现企业获客成本降低与转化效率的指数级跃升,2026广州网络服务行业底层逻辑重构从流量采买到信任资产沉淀根据【中国互联网信息中心】2026年最新权威数据,粤港澳大湾区企业数字化渗透率已达87%,单纯的搜索排名堆砌已失效,如今的广……

    2026年4月28日
    5500
  • 如何准确运用aspxif判断?探讨其在网页开发中的疑问与解决策略

    <% if (condition) { %> 是 ASP.NET Web Forms (.aspx) 页面中用于服务器端条件渲染的核心指令,它允许开发者根据布尔表达式的结果动态控制 HTML 或服务器控件的输出,其本质是内联代码块(<% … %>)与标准 C# if 语句的结合,在页……

    2026年2月6日
    12730
  • asp下拉列表传送,究竟如何实现高效与稳定的传输?

    ASP下拉列表传送是一种在ASP(Active Server Pages)网页开发中,通过下拉列表(Select元素)实现数据选择并触发页面跳转或数据提交的技术,它结合了HTML表单元素与服务器端脚本,为用户提供直观的交互方式,同时提升网站的功能性和用户体验,以下将详细解析其原理、实现方法、优化技巧及专业解决方……

    2026年2月3日
    12700
  • 美国便宜VPS哪家强?RackNerd洛杉矶DC-02机房VPS套餐

    RackNerd洛杉矶DC-02机房VPS在限时促销期内以$14.89/年的极低门槛提供1GB内存与3TB流量,是预算有限且追求稳定性的用户首选方案,在云服务器市场波动剧烈的当下,寻找一款兼具性价比与稳定性的入门级产品并非易事,RackNerd作为老牌IDC服务商,其洛杉矶DC-02机房凭借优质的线路和低廉的价……

    2026年6月27日
    1400
  • AIoT设备取什么名字,智能设备命名有哪些技巧?

    AIoT设备的命名绝非简单的文字游戏,而是产品战略的第一块基石,一个优秀的AIoT设备名称,必须同时承载技术属性、品牌基因与用户认知,直接决定产品在市场中的传播效率与记忆深度,核心结论在于:AIoT设备的命名应遵循“功能可视化+交互拟人化+场景符号化”的三维法则,在降低用户认知成本的同时,建立独特的品牌资产壁垒……

    2026年3月20日
    11600
  • 泽御云618云服务器低至3.99元是真的吗?香港云服务器推荐

    泽御云618期间香港云服务器拼团价低至3.99元,内蒙古节点享8折优惠,美国及香港4核4G配置年付仅需288元,是预算有限但追求高性能用户的最佳入手时机,在云计算市场竞争日益激烈的当下,寻找高性价比的服务器资源已成为许多开发者、中小企业站长以及跨境电商卖家的核心诉求,泽御云此次推出的618大促活动,并非简单的价……

    2026年7月8日
    12300
  • 服务器c盘满了怎么办?服务器c盘空间不足原因及解决方法

    服务器C盘空间耗尽是企业IT运维中最常见却最易被轻视的紧急故障之一,一旦C盘满载,系统响应迟滞、服务中断、日志写入失败、更新无法安装等问题将接踵而至,轻则影响业务连续性,重则导致服务器宕机,数据丢失风险陡增,根据2023年IDC运维调研数据,C盘空间不足引发的服务器故障占Windows系统异常事件的37%,远高……

    程序编程 2026年4月17日
    5300
  • 服务器error是什么原因?服务器error常见原因及解决方法

    服务器error并非偶然故障,而是系统稳定性、架构设计与运维能力的集中体现,当用户访问网站时突然遭遇“服务器error”,往往意味着后端服务在处理请求过程中发生了未被捕获的异常,这不仅影响用户体验,更可能暴露企业技术底座的深层隐患,本文基于真实运维案例与行业实践,系统解析其成因、影响与应对策略,助您构建高可用系……

    程序编程 2026年4月16日
    5300
  • iWebFusion独立服务器$49/月起配置如何?美国洛杉矶多机房租用推荐

    iWebFusion独立服务器以$49/月起的极致性价比,提供从4核到40核CPU、最高384G内存及NVMe高速存储的配置组合,是2026年追求高性能与低成本平衡的首选方案,在云计算市场日益内卷的当下,寻找一款既能满足高并发业务需求,又不会让预算超支的独立服务器,成为了许多技术决策者头疼的问题,传统的VPS往……

    2026年6月27日
    1800

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注