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

相关推荐

  • ASP.NET怎么学最快?新手入门教程看这里就懂了!

    ASP.NET:构建现代企业级Web应用的强大框架ASP.NET 是由微软开发并持续演进的免费、开源Web应用框架,是.NET平台的核心组成部分,它专为构建高性能、可扩展、安全且易于维护的企业级Web应用程序、API服务和实时应用而设计,ASP.NET的核心优势与技术栈跨平台能力: 基于.NET Core的现代……

    2026年2月7日
    13300
  • AI剪辑免费体验是真的吗?免费AI剪辑软件推荐

    在数字化视频创作的浪潮中,效率与质量已成为衡量生产力的核心标准,AI剪辑技术的成熟,彻底改变了传统视频制作的繁琐流程,使得“降本增效”不再是空话, 对于创作者而言,最直接的红利便是能够零成本接触前沿技术,通过AI剪辑免费体验,用户可以在不投入资金成本的前提下,完成从粗剪到精修的全过程,这不仅大幅降低了创作门槛……

    2026年3月3日
    11300
  • AI应用管理平台哪个好用,企业如何选择推荐工具?

    构建统一、可观测且安全的治理框架是企业实现AI价值最大化的核心关键,在当前技术环境下,单纯引入大模型已不足以形成竞争优势,如何对分散的AI应用进行全生命周期管理,决定了企业能否在控制成本与风险的同时,实现业务效率的指数级增长,有效的管理策略必须聚焦于API网关统一接入、精细化成本控制以及严格的数据安全合规,通过……

    2026年2月23日
    14100
  • 柳州移动dns服务器地址是多少?广西柳州移动dns设置方法

    广西柳州移动用户首选的DNS服务器地址为117.136.38.1和111.13.101.1,这两组地址能显著提升网页加载速度并优化视频播放体验,在数字化生活日益普及的今天,网络连接的稳定性与速度直接决定了我们的使用体验,许多柳州地区的中国移动用户发现,尽管宽带带宽足够,但打开网页或加载视频时依然会出现卡顿现象……

    2026年5月29日
    4600
  • ai人工智能云计算大数据是什么,人工智能云计算大数据应用前景如何

    AI人工智能、云计算与大数据的深度融合,已不再是单纯的技术叠加,而是驱动企业数字化转型的核心引擎,这三大技术要素构成了现代数字经济的“铁三角”,其中大数据是生产资料,云计算是生产工具,AI人工智能则是生产力,企业若想在激烈的市场竞争中突围,必须构建“云智数”一体化的技术底座,实现从数据采集、处理到智能决策的全链……

    2026年3月7日
    11500
  • steam下载游戏连不上服务器怎么办,连接失败解决方法?

    Steam下载游戏提示无法连接到服务器、连接失败,直接原因是客户端与Steam内容服务器(CDN)之间的网络链路中断或响应超时,最有效的解决办法是按顺序重启网络设备、切换下载节点、修改DNS,若仍无效再检查防火墙和加速工具设置,先搞清楚Steam服务器连接失败到底卡在哪一环Steam下载游戏的过程不是直接从你家……

    2026年8月24日
    200
  • AI是大数据吗,人工智能和大数据之间有什么关系和区别

    AI并非大数据,两者是既有本质区别又深度协同的两个独立概念,在数字化转型的浪潮中,很多人容易将人工智能(AI)与大数据混为一谈,针对ai是大数据吗这一核心疑问,明确的结论是否定的,大数据指的是海量、高增长率和多样化的信息资产,而人工智能则是模拟人类智能进行计算、推理和决策的技术系统,简而言之,大数据是“燃料……

    2026年2月18日
    17800
  • Arkecx印度云服务器性能如何?联通绕道欧美延迟高

    Ark Edge Cloud在印度孟买节点的表现呈现明显的运营商路由差异,联通用户体验相对最优,而电信和移动用户因绕道欧美导致延迟较高,适合对成本敏感且能接受一定网络波动的场景,在2026年的云服务器市场中,印度孟买节点因其低廉的价格和作为南亚数据枢纽的地位,依然吸引着大量出海企业和开发者的目光,网络延迟和路由……

    2026年6月17日
    2000
  • 服务器ip映射到外网怎么操作?外网访问服务器配置教程

    服务器IP映射到外网是实现内部服务对外访问的关键技术路径,其核心在于通过网络地址转换(NAT)或端口转发技术,将内网服务器的私有IP地址转换为公网可识别的地址,从而打破网络隔离,实现数据的互联互通,这一过程不仅关乎网络架构的合理性,更直接影响业务的连续性与安全性,核心结论:成功的IP映射依赖于精准的路由配置、严……

    2026年3月29日
    10200
  • AI秒杀软件是真的吗,淘宝京东抢购神器怎么抢?

    在电商流量竞争白热化的当下,AI秒杀技术已彻底改变了限量商品的获取逻辑,核心结论在于:通过深度学习算法预测库存释放节点,结合毫秒级自动化执行策略,能够将抢购成功率从人工操作的随机性提升至接近确定性,但这需要建立在精准的技术架构与合规的风控对抗基础之上,技术架构与运行逻辑AI秒杀并非简单的脚本点击,而是一套复杂的……

    2026年2月22日
    15600

发表回复

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