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

记录Webapi Excel 导出

文章目录

      • 1、helper
      • 2、control
      • 3、前端 axios

记录webapi excel 导出File示例
.NET8.0 NPOI2.73

1、helper

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.Data;
using System.IO;
/// <summary>
/// 导出EXCEL
/// </summary>
public class ExcelHelper
{/// <summary>/// 导出EXCEL/// </summary>public static MemoryStream Export(DataTable dataTable){IWorkbook workbook = new XSSFWorkbook();ISheet sheet = workbook.CreateSheet("Sheet1");// 创建表头IRow headerRow = sheet.CreateRow(0);foreach (DataColumn column in dataTable.Columns){ICell cell = headerRow.CreateCell(column.Ordinal);cell.SetCellValue(column.ColumnName);}// 填充数据行int rowIndex = 1;foreach (DataRow row in dataTable.Rows){IRow dataRow = sheet.CreateRow(rowIndex++);foreach (DataColumn column in dataTable.Columns){ICell cell = dataRow.CreateCell(column.Ordinal);cell.SetCellValue(row[column].ToString());}}// 将工作簿写入内存流MemoryStream stream = new MemoryStream();workbook.Write(stream);return stream;}
}

2、control

 [Route("api/[controller]/[action]")][ApiController]public class UserController : ControllerBase{/// <summary>///导出/// </summary>[HttpGet("export")]public async Task<IActionResult> ExportExcel(){DataTable dt = await _Users.GetAll();var stream = ExcelHelper.Export(dt);string name = DateTime.Now.ToString("yyyyMMddHHmmss");return File(stream.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", name+".xlsx");}}

3、前端 axios

//-按钮<Button type="success" @click="ExlAction">导出</Button>
//-接口
export const ExportApi = () => {return request.get({ url: '/User/ExportExcel/export', responseType: 'blob' })
}
//-调用
const ExlAction = async () => {const res = await ExportApi() //导出数据if (res) {const contentDisposition = res.headers['content-disposition']let filename = 'exported-file.xlsx'if (contentDisposition) {const matches = /filename="?([^;]+)"?/.exec(contentDisposition)if (matches && matches[1]) {filename = matches[1]}}const url = window.URL.createObjectURL(new Blob([res.data]))const link = document.createElement('a')link.href = urllink.setAttribute('download', filename)document.body.appendChild(link)link.click()link.remove()}
}

在这里插入图片描述

http://www.lryc.cn/news/625286.html

相关文章:

  • 【qml-4】qml与c++交互(类型多例)
  • 【CPP】一个CPP的Library(libXXXcore)和测试程序XXX_main的Demo
  • kkfileview预览Excel文件去掉左上角的跳转HTM预览、打印按钮
  • Spring Boot 全局异常处理
  • JVM参数优化
  • 《算法导论》第 29 章 - 线性规划
  • Matplotlib数据可视化实战:Matplotlib子图布局与管理入门
  • Day10--滑动窗口与双指针--2875. 无限数组的最短子数组,76. 最小覆盖子串,632. 最小区间
  • Hugging Face 核心组件介绍
  • 【牛客刷题】岛屿数量问题:BFS与DFS解法深度解析
  • Git的初步学习
  • 系统架构设计师-操作系统-避免死锁最小资源数原理模拟题
  • git 创用操作
  • [系统架构设计师]云原生架构设计理论与实践(十四)
  • linux系统装google chrome,amd64
  • 2025年5月架构设计师综合知识真题回顾,附参考答案、解析及所涉知识点(六)
  • 应用缓存不止是Redis!——亿级流量系统架构设计系列
  • [系统架构设计师]信息系统架构设计理论与实践(十二)
  • 监督分类——最小距离分类、最大似然分类、支持向量机
  • 利用图数据库高效解决 Text2sql 任务中表结构复杂时占用过多大模型上下文的问题
  • Apache IoTDB:大数据时代时序数据库选型的技术突围与实践指南
  • 《算法导论》第 31 章 - 数论算法
  • 开源 C++ QT Widget 开发(二)基本控件应用
  • 解决 UniApp 自定义弹框被图片或 Canvas 覆盖的 Bug
  • 【datawhale组队学习】n8n TASK01
  • 软件测试覆盖率:真相与实践
  • Mysql——分库分表后id冲突解决方案(即分布式ID的生成方案)
  • Python 作用域 (scope) 与闭包 (closure)
  • Android中使用RxJava实现网络请求与缓存策略
  • 在python中等号左边的都是对象,在matlab中等号a = 3+2 a就是个变量