当前位置: 首页 > 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.dtcms.com/a/338899.html

相关文章:

  • 电影购票+票房预测系统 - 后端项目介绍(附源码)
  • Android Studio常用知识总结
  • HP Pavilion G6 笔记本使用ventoy启动安装Ubuntu 22.04 桌面版
  • Redission是什么
  • 低延迟、跨平台与可控性:直播SDK的模块化价值解析
  • 探访隐形冠军|安贝斯携手武汉科创协会x深钣协“湖北行”,溯源南海光电的创新密码
  • Qt个人通讯录项目开发教程 - 从零开始构建联系人管理系统
  • 【运维进阶】Ansible 角色管理
  • 【自动化运维神器Ansible】Playbook调用Role详解:从入门到精通
  • 数字孪生 :提高制造生产力的智能方法
  • 红日靶场03
  • 【Qt】 数据库连接池
  • B站 韩顺平 笔记 (Day 23)
  • LG P3710 方方方的数据结构 Solution
  • 【Qt开发】常用控件(五)
  • DzzOffice版权信息修改教程
  • 遥感amp;机器学习入门实战教程 | Sklearn 案例③:PCA + SVM / 随机森林 对比与调参
  • CSDN 创始人蒋涛:以开源驱动技术创新,拥抱黄金十年
  • LeetCode100-560和为K的子数组
  • 开源 C++ QT Widget 开发(二)基本控件应用
  • leetcode_ 76 最小覆盖子串
  • 决策树(续)
  • 大数据技术栈 —— Redis与Kafka
  • 字符串与算法题详解:最长回文子串、IP 地址转换、字符串排序、蛇形矩阵与字符串加密
  • 磨砂玻璃登录页面使用教程 v0.1.1
  • 【Linux仓库】进程创建与进程终止【进程·柒】
  • 通过C#上位机串口写入和读取浮点数到stm32的片内flash实战4(通过串口下发AD9833设置值并在上位机显示波形曲线)
  • 基于单片机智能点滴输液系统
  • 元素的width和offsetWidth有什么区别
  • java八股文-中间件-参考回答