mvc 根据模板导出excel,直接导出文件流
1.c#
/// <summary>/// 导出员工/// </summary>/// <returns></returns> [HttpGet]public FileResult ExportEmployee(){var eid = getEnterpriseId();LogWriter.ToDebug($"导出员工开始");string templateUrl = "/ExportFile/Template/ExportEmployeesTemplate.xls";//string temporaryUrl = $"/ExportFile/Temporary/ExportEmployees_{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}.xls";string templateRealUrl = Request.MapPath(templateUrl);//string temporaryRealUrl = Request.MapPath(temporaryUrl);//System.IO.File.Copy(templateRealUrl, temporaryRealUrl, true);var result = ExportEmployees(eid, templateRealUrl);LogWriter.ToDebug($"导出员工结束");return result; //return Json(new ResultInfo(1001, "导出员工失败")); }
private FileResult ExportEmployees(Guid eId, string tempFileUrl){var employeesList = EnterpriseBLL.GetExportEmployees(eId);IWorkbook workbook;try{using (FileStream stream = System.IO.File.Open(tempFileUrl, FileMode.Open, FileAccess.Read)){workbook = new HSSFWorkbook(stream);ISheet sheet = workbook.GetSheet("Sheet1");for (int i = 0; i < employeesList.Count; i++){IRow row = sheet.CreateRow(i + 3);for (int j = 0; j < 7; j++){ICell cell = row.CreateCell(j);cell.SetCellValue(EnterpriseBLL.getCellValue(employeesList[i], j));}}}//转为字节数组 NpoiMemoryStream streamOut = new NpoiMemoryStream();streamOut.AllowClose = false;workbook.Write(streamOut);streamOut.Seek(0, SeekOrigin.Begin);//return File(stream, "application/vnd.ms-excel", file);return File(streamOut, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Employees.xls");}catch (Exception ex){LogWriter.ToError($"ZJCX.ZJCDPC.WebUI->EnterpriseBLL->ExportEmployees内部错误,{ex.Message}", ex);throw ex;}}//新建类 重写Npoi流方法public class NpoiMemoryStream : MemoryStream{public NpoiMemoryStream(){AllowClose = true;}public bool AllowClose { get; set; }public override void Close(){if (AllowClose)base.Close();}}
前端:
通过创建a标签实现重命名文件
this.$getDownload('/API/ExportEmployee').then(res => {let blob = new Blob([res.data], { type: "application/vnd.openxmlformats-officedocument.spreadsheethml.sheet" });let objctUrl = URL.createObjectURL(blob);var a = document.createElement('a');a.innerHTML = "员工信息.xls";a.download = "员工信息.xls";a.href = objctUrl;document.body.appendChild(a);var evt = document.createEvent("MouseEvents");evt.initEvent("click", false, false);a.dispatchEvent(evt);document.body.removeChild(a);})
前端用的vue-anxio,需要注意:
//get请求封装 export function getDownload(url) {return new Promise((resolve, reject) => {axios({method: 'get',url: baseUrl+url,responseType: 'arraybuffer'}).then(res => {resolve(res)}, err => {console.log('get 报错');reject(err);})}) };
转载于:https://www.cnblogs.com/liuqiyun/p/10729904.html
mvc 根据模板导出excel,直接导出文件流相关推荐
- 使用alibaba的easyexcel填充复杂模板,导出Excel,返回文件流
做个记录,试了很多方法都不行(本来想使用对象单独写一个table,但是没找到属性),又不想更换依赖,后面才看到的模板填充,能用............ //依赖 <dependency>& ...
- java 根据excel模板导出excel
java 根据excel模板导出excel 由于项目需求,最近做了一个需要根据查询接口导出excel表格数据的需求 pom依赖: <dependency><groupId>or ...
- java 分析excel模板,java 根据excel模板导出excel
java 根据excel模板导出excel 由于项目需求,最近做了一个需要根据查询接口导出excel表格数据的需求 pom依赖: org.apache.poi poi 3.16 org.apache. ...
- .Net NPOI 根据excel模板导出excel、直接生成excel
一.根据Excel模板导出excel 1.导入NPOI.dll 2.DAL中添加类ExportExcel.cs using NPOI.SS.UserModel; using System; usin ...
- springboot使用jxls导出excel___(万能通用模板)--- SpringBoot导入、导出Excel文件___SpringBoot整合EasyExcel模板导出Excel
springboot使用jxls导出excel 实现思路: 首先在springBoot(或者SpringCloud)项目的默认templates目录放入提前定义好的Excel模板,然后在具体的导出接口 ...
- EasyExcel根据自定义模板导出Excel(包含图片、表格)
使用EasyExcel根据模板导出excel,包含图片.表格 提示:其实使用EasyExcel根据模板导出一个excel并不难,难点在于指定图片的位置 文章目录 使用EasyExcel根据模板导出ex ...
- springboot+poi开发excel导出 加载Excel模板导出 Excel批量导出详解
提到Excel导出功能,可能很多人都使用springmvc框架做过,笔者今天要给大家分享的是基于springBoot开发Excel复杂模板导出功能(所谓复杂模板指在模板里的特定表头里有不同的单元格合并 ...
- 阿里easyexcel通过模板导出excel
easyexcel通过模板导出excel 之前使用其他方式进行excel的导出,像poi或者freemarker或者Beetl,效果都还行,但是总是有一些小问题.许多的解决思路都是:通过制作excel ...
- 使用EasyPoi根据模板导出Excel或word文档
接着上篇文章 Java根据模板导出Excel并生成多个Sheet 简单介绍下EasyPoi的使用,直接上代码吧 首先当然是先引入jar包了,看下图 其次,还是贴代码吧看实例,下面是根据模板导出的工具类 ...
- EasyPOI 根据模板导出excel时,无法自适应行高得解决方案记录
目录 EasyPOI 根据模板导出excel时,无法自适应行高得解决方案记录 首先说一下问题得场景 第一步 第二步 第三步 第四步 第五步 第六步 第七步 (就是这个方法!) EasyPOI 根据模板 ...
最新文章
- ThoughtWorks雷达上的新奇变化
- Doug Cutting—访谈录
- linux 传真 邮件,如何在Linux环境下架设一台传真服务器(2)
- 没有检测到磁盘 请关闭计算机并至少,【基本计算机问题】计算机不是遇到非常严重的问题,请看这里解答...
- (16)System Verilog禁止类中所有变量随机化
- Robinhood CEO 呼吁证券行业通过创新实现实时结算
- vscode: remote-ssh下与阿里云端编程
- HTML编程怎么设置字体,html怎么设置字体
- Java抽签小程序(可控制抽几个人)(利用随机数与数组想结合)
- Linux下编写GT911触摸驱动
- fid和is_fid解释
- 元气骑士远程联机(仅安卓)
- sar adc的常用指标(一)
- 【代码审计】51 TP5框架、无框架 变量覆盖反序列化
- 父亲将房子过户给后代需要交税吗
- 事后诸葛亮-团队总结
- 为什么要认真准备Java面试,编程语言排行榜告诉你
- 用电脑怎么打开pdf文件阅读
- 2022湖南株洲服饰产业数智互联网峰会暨湖南服饰产业互联网高峰论坛成功举办
- 红牛v5 android cm12.1 分辨率修改