当前位置: 首页 > news >正文

.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] 

 

http://www.dtcms.com/a/292369.html

相关文章:

  • Unity笔记——事件中心
  • 力扣-300.最长递增子序列
  • 以太坊网络发展分析:技术升级与市场动态的双重驱动
  • 快手开源 Kwaipilot-AutoThink 思考模型,有效解决过度思考问题
  • Cy3-COOH 花菁染料Cy3-羧基
  • linux-日志服务
  • Gitlab-CI实现组件自动推送
  • 常用 Flutter 命令大全:从开发到发布全流程总结
  • 检索增强型生成助力无人机精准数学推理!RAG-UAV:基于RAG的复杂算术推理方法
  • Lua语言
  • MybatisPlus-16.扩展功能-枚举处理器
  • ORACLE DATABASE 11.2.0.4 RAC Install
  • Vue-22-通过flask接口提供的数据使用plotly.js绘图(一)
  • Oracle定时清理归档日志
  • RAG(检索增强生成)里的文档管理
  • 二次供水管理系统:远程监控+智能调控+故障预警解决方案
  • 用ffmpeg 进行视频的拼接
  • 【指南】网络安全领域:HW 行动(国家网络安全攻防演练)是什么?
  • 一些Avalonia与WPF内容的对应关系和不同用法
  • 单一职责原则(SRP):构建高质量软件的基石
  • Java 并发性深度解析
  • JS WebAPIs DOM节点概述
  • 网络层传输
  • 4G车载录像机的作用详解:提升行车安全与智能管理的核心技术
  • 数字签名(Digital Signature)
  • XSS内容分享
  • Windows 环境排除 Windows Defender 对指定路径或进程的影响
  • 在vscode 使用 remote-ssh
  • 【接口自动化】掌握接口自动化:核心概念讲解(理论知识)
  • 微博视觉算法面试30问全景精解