.NET使用EPPlus导出EXCEL的接口中,文件流缺少文件名信息

测试的接口方法如下:

public async Task<IActionResult> ExportBusinessPriceAsync(PageCbbjBusinessPriceDetailInput input)

{

ExportBusinessPrice mybPrice = new ExportBusinessPrice();

var bPriceDetailOutputList = (await PageAsync(input)).Items?.Adapt<List<ExportCbbjBusinessPriceDetailOutput>>() ?? new();

if (input.SelectKeyList?.Count > 0) bPriceDetailOutputList = bPriceDetailOutputList.Where(x => input.SelectKeyList.Contains(x.Id)).ToList();

mybPrice.cbbjBusinessPriceDetailOutputList= bPriceDetailOutputList;

return ExcelOp.ExportBusinessPrice(mybPrice, "商务报价方案导出");

}

测试的ExcelOp业务类如下:

复制代码
using Magicodes.ExporterAndImporter.Excel;
using Magicodes.ExporterAndImporter.Core;
using OfficeOpenXml;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSHK.Platform.Module.Bus.Application.Baojia.Common
{
    public class ExcelOp
    {
        public static void ReadExcel(string filePath)
        {
            
        }

        /// <summary>
        /// 导出商务报价
        /// </summary>
        /// <param name="ExpDto"></param>
        /// <param name="fileName"></param>
        public static IActionResult ExportBusinessPrice(ExportBusinessPrice ExpDto, string fileName)
        {
            // 创建一个新的 ExcelPackage 实例
            ExcelPackage package = new ExcelPackage();
            // 添加一个工作表并命名为 "Data"
            ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Data");
            // 在 A1 单元格写入文本,在 B1 单元格写入数字,并设置格式
            worksheet.Cells["A1"].Value = "Name";
            worksheet.Cells["B1"].Value = "Age";
            worksheet.Cells["A2"].Value = "Alice";
            worksheet.Cells["B2"].Value = 30;
            worksheet.Cells["A2"].Style.Font.Bold = true; // 加粗文本
                                                          // 保存到文件系统中的文件
            
            
            //package.SaveAs(new FileInfo("example.xlsx"));
            var stream = new MemoryStream();
            package.SaveAs(stream);
            package.Stream.Position = 0;
            string _filename = $"{fileName}-{DateTime.Now:yyyy-MM-dd_HHmmss}";
            //File(stream,
            //"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            //fileName);
            var myResult= new XlsxFileResult(stream: package.Stream, fileDownloadName: _filename);

            return myResult;
        }
    }
}

返回的文件流信息,在前端获取文件名时,得不到文件名。headers文件头信息中,缺少content-disposition = 这一行信息【content-disposition ='attachment; filename=%e5%95%86%e5%8a%a1%e6%8a%a5%e4%bb%b7%e8%af%a6%e6%83%85%e5%af%bc%e5%87%ba%e8%ae%b0%e5%bd%95-2025-07-22_151543.xlsx' 】

如下图所示:

找了几个小时原因,一直以为是我使用EPPlus的方法有问题,或者生成 XlsxFileResult 类型返回的时候有问题。最后无意中发现是我声明接口的时候,缺少了API描述属性导致的。ApiDescriptionSettings(Name = "ExportBusinessPrice"), HttpPost, NonUnify

相关推荐
admin0057 小时前
Excel记账和财务软件记账哪个好?效率与准确率真实对比
excel·excel记账·财务软件记账·小微企业记账
qq_5486124512 小时前
.NET 平台报表工具汇总(.NET Framework /.NET6-8,中国式复杂报表、Web 嵌入、填报、导出打印)
前端·.net
公子小六12 小时前
基于.NET的Windows窗体编程之WinForms音频控件
windows·microsoft·c#·.net·音视频·winforms
Python私教14 小时前
Excel 和群聊什么时候该升级成管理系统?7 个判断信号
excel·管理系统·权限设计
鲲穹AI种草14 小时前
表格数据处理怎么选?多款 Excel 工具能力客观记录
excel·表格数据处理
界面开发小八哥14 小时前
界面控件DevExpress Blazor v26.1新版亮点 - Navigation(导航)
javascript·.net·界面控件·blazor·devexpress·ui开发
AI英德西牛仔15 小时前
Claude导出word指令的PC端最优解:AI导出鸭电脑版底层逻辑全拆解
人工智能·word·excel·deepseek·ai导出鸭
toooooop816 小时前
踩坑:PHP7.2导出Excel正常,升级7.3文件损坏需修复
android·excel
AI英德西牛仔16 小时前
Gemini 导出 word 指令 时代,PC 端 AI 工作流的最后一块拼图:AI 导出鸭电脑版深度拆解
人工智能·word·excel·deepseek·ai导出鸭
AI导出鸭17 小时前
怎么让Grok做表格?AI导出鸭苹果版通过专属解析引擎,将Grok输出的管道表格智能还原为二维结构,一键导出Excel或Word标准表格。
人工智能·chatgpt·word·excel·ai导出鸭