当前位置: 首页 > 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.lryc.cn/news/595658.html

相关文章:

  • 归并排序(Merge Sort)(递归写法)
  • 【前端】ikun-pptx编辑器前瞻问题一: pptx的xml样式, 使用html能100%还原么
  • vscode目录,右键菜单加入用VSCode打开文件和文件夹(快速解决)(含删除)(脚本)
  • 基于 KeepAlived + HAProxy 搭建 RabbitMQ 高可用负载均衡集群
  • 医院信息系统(HIS)切换实施方案与管理技术分析
  • Linux中信号认识及处理和硬件中断与软中断的讲解
  • 基于 Spring Batch 和 XXL-Job 的批处理任务实现
  • iOS加固工具有哪些?从零源码到深度混淆的全景解读
  • iOS 抓包工具有哪些?场景导向下的工具推荐与实战对比
  • 微软徽标认证是什么?如何快速获取驱动签名?
  • haproxy七层代理新手入门详解
  • 字体识别实战:用Python打造智能字体侦探工具
  • 查看 iOS iPhone 设备上 App 和系统运行时的实时日志与崩溃日志
  • 一文速通《线性方程组》
  • ipynb断点不停 ipynb调试相关
  • 项目集成zustand后,如何构建和使用,以及devtools函数。
  • 报错error:0308010C:digital envelope routines::unsupported解决方案
  • 网络原理 HTTP 和 HTTPS
  • 【3GPP】5G专用词汇1
  • 开源AI智能客服、AI智能名片与S2B2C商城小程序在客户复购与转介绍中的协同效应研究
  • 智联智造:国内新能源汽车品牌AGV小车无线控制系统创新实践
  • 《C++初阶之STL》【string类:详解 + 实现】
  • python办自动化--读取邮箱中特定的邮件,并下载特定的附件
  • 在Android开发中,如何获取到手机设备的PIN码?
  • 使用python中的pymysql库,并且转化为数组元组数据
  • 重构创作边界:川翔云电脑 - UE5云端超算引擎​
  • mysql_innodb_cluster_metadata源数据库
  • 7.22总结mstp,vrrp
  • 如何给手机充电才不伤电池?
  • Selenium+Java 自动化测试入门到实践:从环境搭建到元素操作