vue 实现带模板的EXCEL导出
话不多说直接上代码
1.前端(个人逻辑做了Excel导出和world导出,world导出会在下一个博客中列出)
var xhr = new XMLHttpRequest()
var url = window.SITE_CONFIG['baseUrl'] + 'Api/Arrange/ExportPerListByTimeDoc'
var filename = this.myDateType === 'DAY' ? '1.docx' : '2.xls'
xhr.open('post', url, true)
xhr.responseType = 'blob'
xhr.setRequestHeader('Content-Type', 'application/json; charset=utf-8')
xhr.setRequestHeader('Authorization', 'BasicAuth123 ')
xhr.onreadystatechange = function () {
if (this.readyState === 4) {
if (this.status === 200) {
if (this.response.type === 'application/ms-excel') {
var eleLink = document.createElement('a')
eleLink.download = filename
eleLink.style.display = 'none'
var blob = new Blob([this.response], {
type: 'application/ms-excel'
})
eleLink.href = URL.createObjectURL(blob)
document.body.appendChild(eleLink)
eleLink.click()
document.body.removeChild(eleLink)
// showObj.loading = false
} else if (this.response.type === 'application/ms-world') {
var eleLink1 = document.createElement('a')
eleLink1.download = filename
eleLink1.style.display = 'none'
var blob1 = new Blob([this.response], {
type: 'application/ms-world'
})
eleLink1.href = URL.createObjectURL(blob1)
document.body.appendChild(eleLink1)
eleLink1.click()
document.body.removeChild(eleLink1)
}
}
}
}
xhr.send(JSON.stringify(postData))
2.后端
string filenname = null;
try
{
string pathMsg = System.Web.HttpContext.Current.Server.MapPath("/"); //获得应用程序根目录所在的位置.
string path = pathMsg + @"Download";//文件复制到的位置
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
string tempaltePath = pathMsg + @"ExportTemplate/" + copyTempName; //要拷贝的模板
filenname = Path.Combine(path, expName + DateTime.Now.ToString("yyyyMMddHHmmssms") + @".xls");
FileInfo info = new FileInfo(tempaltePath);//获得要拷贝的模板
info.CopyTo(filenname); //将模板拷贝到指定位置
XSSFWorkbook hssfworkbookDown;
using (FileStream file = new FileStream(filenname, FileMode.Open, FileAccess.Read))
{
hssfworkbookDown = new XSSFWorkbook(file);
file.Close();
}
XSSFSheet FirstSheet = (XSSFSheet)hssfworkbookDown.GetSheet(sheetName);
//这里写操作逻辑 我给你写个对单元格操作的例子
XSSFCell cell1 = (XSSFCell)FirstSheet.GetRow(i + 4).CreateCell(0);
cell1.CellStyle.BorderBottom = BorderStyle.Thin;//设置单元格边框
cell1.SetCellValue(listMsg[i].USER_NAME);//单元格赋值
FileStream files = new FileStream(filenname, FileMode.Create);
hssfworkbookDown.Write(files);
MemoryStream ms = new MemoryStream();
hssfworkbookDown.Write(ms);
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.Buffer = true;
System.Web.HttpContext.Current.Response.Charset = "utf-8";
System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=xxx.xls");
System.Web.HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
System.Web.HttpContext.Current.Response.ContentType = "application/ms-excel";
System.Web.HttpContext.Current.Response.BinaryWrite(ms.ToArray());
System.Web.HttpContext.Current.Response.End();
files.Close();
files.Dispose();
这种写法会自动创建一个文件存在系统,留着备用核对啥的 也可以把创建方法去掉 直接导出
vue 实现带模板的EXCEL导出的更多相关文章
- 导出带图片的Excel——OOXML文件分析
需求: 普通js导出文件excel具有兼容性问题,通过js-xsl导出文件API未找到导出图片的方案,实例过少,因此针对07年后以.xlsx后缀的excel文件,通过修改后缀.zip参考文件模板来实现 ...
- (原创)带模板的OLE输出EXCEL
其实带模板的OLE输出EXCEL就是将要输出的EXCEL中一些拥有固定值(如标题,表头行等)的单元格先填充好数据和设置好格式后作为模板上传到SAP 中.这样后续在输出EXCEL时只需从SAP中将模板下 ...
- PHP原生EXCEL导出带样式无插件无乱码实现
PHP原生EXCEL导出 经测试 带样式 无插件 无乱码,不需要引入任何插件,不需要修改任何编码 (使用时只需要修改引入php数据库配置文件.修改thead tbody中的数据即可.根据自己的需要去接 ...
- vue项目使用js-xlsx进行excel表格的导入和导出方法的简单原型封装
前提:已经安装好 file-saver xlsx和 script-loader,如未安装,请查看 https://www.cnblogs.com/luyuefeng/p/8031597.html 新建 ...
- abp框架Excel导出——基于vue
abp框架Excel导出--基于vue 目录 abp框架Excel导出--基于vue 1.技术栈 1.1 前端采用vue,官方提供 1.2 后台是abp--aspnetboilerplate 2. E ...
- Java导出带格式的Excel数据到Word表格
前言 在Word中创建报告时,我们经常会遇到这样的情况:我们需要将数据从Excel中复制和粘贴到Word中,这样读者就可以直接在Word中浏览数据,而不用打开Excel文档.在本文中,您将学习如何使用 ...
- 如何通过Java导出带格式的 Excel 数据到 Word 表格
在Word中制作报表时,我们经常需要将Excel中的数据复制粘贴到Word中,这样则可以直接在Word文档中查看数据而无需打开另一个Excel文件.但是如果表格比较长,内容就会存在一定程度的丢失,无法 ...
- 将数据导入带模板EXCEL
在EXCEL模板里设置好样式和格式 点击事件 private void btnReport_Click(object sender, EventArgs e) { ...
- vue后台_纯前端实现excel导出/csv导出
之前的文件下载功能一般是由前后端配合实现,由于项目需要,纯前端实现了一把excel的导出功能: 一.excel导出 1.安装依赖库 xlsx:这是一个功能强大的excel处理库,但是上手难度也很大,还 ...
随机推荐
- linux编译安装Apache
1 前言 编译安装Apache HTTP Server,目前最新的版本为2.4.41,做好apr,apr-util,pcre的安装后编译安装即可. 2 准备工作 三个:apr,apr-util,pcr ...
- 14. VUE 子组件修改父组件的值
在 Vue 当中,父组件 -> 子组件 传值,都是通过属性的形式传递的. 子组件 修改 传递数据 直接操作父组件传递过来的值,用是可以用的,但是打开控制台后,会发现 Vue 有个警告:你不要直接 ...
- 数据结构之Stack | 让我们一块来学习数据结构
栈的介绍 栈就是和列表类似的一种数据结构,它可用来解决计算机世界里的很多问题.栈是一种高 效的数据结构,因为数据只能在栈顶添加或删除,所以这样的操作很快,而且容易实现. 栈的使用遍布程序语言实现的方方 ...
- Java IO流知识总结
Java IO的原理 I/O是Input和Output的缩写,用来处理设备之间的数据传输.如读/写文件,网络通讯等. Java程序中,对于数据的输入/输出操作以"流(stream)" ...
- 从苏宁电器到卡巴斯基第24篇:难忘的三年硕士时光 II
没办法,还是先打好基础吧 其实在我知道自己面试失败后,第一个想法就是将面试官问我的问题都总结出来,然后通过查权威的资料,找出所有问题的答案,背下所有的答案,大概过一到两个月吧,再面试金山.当时我是这么 ...
- hdu5014 构造b数列使得t最大(小想法)
题意: 给你一个序列a,他有n+1个数,每个数的范围是ai >= 0 && a[i] <= n,同时任意两个数字都是不相同的,就是ai != aj (i!=j), ...
- Win64 驱动内核编程-2.基本框架(安装.通讯.HelloWorld)
驱动安装,通讯,Hello World 开发驱动的简单流程是这样,开发驱动安装程序,开发驱动程序,然后安装程序(或者其他程序)通过通讯给驱动传命令,驱动接到之后进行解析并且执行,然后把执行结果返回. ...
- Windows PE第九章 线程局部存储
线程局部存储(TLS) 这个东西并不陌生了,之前写过了一个关于这个的应用,利用静态TLS姿势实现代码段静态加密免杀或者所谓的加壳思路.地址在这:http://blog.csdn.net/u013761 ...
- php isset()与empty()的使用
PHP isset函数作用 isset函数是检测变量是否设置. 格式:bool isset( mixed var [, mixed var [, ...]] ) 返回值: 若变量不存在则返回FALSE ...
- <JVM下篇:性能监控与调优篇>04-JVM运行时参数
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...