话不多说直接上代码

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导出的更多相关文章

  1. 导出带图片的Excel——OOXML文件分析

    需求: 普通js导出文件excel具有兼容性问题,通过js-xsl导出文件API未找到导出图片的方案,实例过少,因此针对07年后以.xlsx后缀的excel文件,通过修改后缀.zip参考文件模板来实现 ...

  2. (原创)带模板的OLE输出EXCEL

    其实带模板的OLE输出EXCEL就是将要输出的EXCEL中一些拥有固定值(如标题,表头行等)的单元格先填充好数据和设置好格式后作为模板上传到SAP 中.这样后续在输出EXCEL时只需从SAP中将模板下 ...

  3. PHP原生EXCEL导出带样式无插件无乱码实现

    PHP原生EXCEL导出 经测试 带样式 无插件 无乱码,不需要引入任何插件,不需要修改任何编码 (使用时只需要修改引入php数据库配置文件.修改thead tbody中的数据即可.根据自己的需要去接 ...

  4. vue项目使用js-xlsx进行excel表格的导入和导出方法的简单原型封装

    前提:已经安装好 file-saver xlsx和 script-loader,如未安装,请查看 https://www.cnblogs.com/luyuefeng/p/8031597.html 新建 ...

  5. abp框架Excel导出——基于vue

    abp框架Excel导出--基于vue 目录 abp框架Excel导出--基于vue 1.技术栈 1.1 前端采用vue,官方提供 1.2 后台是abp--aspnetboilerplate 2. E ...

  6. Java导出带格式的Excel数据到Word表格

    前言 在Word中创建报告时,我们经常会遇到这样的情况:我们需要将数据从Excel中复制和粘贴到Word中,这样读者就可以直接在Word中浏览数据,而不用打开Excel文档.在本文中,您将学习如何使用 ...

  7. 如何通过Java导出带格式的 Excel 数据到 Word 表格

    在Word中制作报表时,我们经常需要将Excel中的数据复制粘贴到Word中,这样则可以直接在Word文档中查看数据而无需打开另一个Excel文件.但是如果表格比较长,内容就会存在一定程度的丢失,无法 ...

  8. 将数据导入带模板EXCEL

    在EXCEL模板里设置好样式和格式 点击事件 private void btnReport_Click(object sender, EventArgs e)        {            ...

  9. vue后台_纯前端实现excel导出/csv导出

    之前的文件下载功能一般是由前后端配合实现,由于项目需要,纯前端实现了一把excel的导出功能: 一.excel导出 1.安装依赖库 xlsx:这是一个功能强大的excel处理库,但是上手难度也很大,还 ...

随机推荐

  1. Apache配置虚拟目录+Zend Studio访问

    1 概述 Apache配置虚拟目录,然后可以通过Zend Studio的工程去访问,只需要修改Apache的httpd.conf文件. 2 修改httpd.conf 找到Apache安装目录下的htt ...

  2. Go-26-Json

    JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式,因简单.可读性强被广泛使用. Go的标准包encoding/json对JSO ...

  3. CS与MSF之间的会话传递

    0x01 MSF会话传递到CS 1. CS上的操作 点击Cobalt Strike然后选择监听器,创建一个HTTPS Beacon的监听器即可 创建成功后如下 2. MSF上的操作 前提是已经获取到了 ...

  4. 额!Java中用户线程和守护线程区别这么大?

    在 Java 语言中线程分为两类:用户线程和守护线程,而二者之间的区别却鲜有人知,所以本文磊哥带你来看二者之间的区别,以及守护线程需要注意的一些事项. 1.默认用户线程 Java 语言中无论是线程还是 ...

  5. hdu4280 最大流DINIC

    题意:       x最小的到x最大的点同一时间的最大运输量. 思路:       裸的最大流,不解释,注意一点,记得加上防爆栈. #pragma comment(linker, "/STA ...

  6. 路由器逆向分析------binwalk工具的安装

    本文博客链接:http://blog.csdn.net/qq1084283172/article/details/65441110 一.binwalk工具运行支持的平台 binwalk工具安装支持的平 ...

  7. hdu 5063 不错的小想法题(逆向处理操作)

    题意:       刚开始的时候给你一个序列,长度为n,分别为a[1]=1,a[2]=2,a[3]=3,a[4]=4...a[n]=n,然后有4种操作如下: Type1: O 1 call fun1( ...

  8. DVWA之Insecure Captcha

    Insecure CAPTCHA Insecure CAPTCHA,意思是不安全的验证码,CAPTCHA是Completely Automated Public Turing Test to Tell ...

  9. 解决在Vim中鼠标右键不能粘贴问题

    最近维护一台服务器,使用putty登录后,用vim时,鼠标右键不能 粘贴而是进入了visual模式.网上查找一番找到了解决方法: 方 法一:在普通模式下键入" :set mouse-=a&q ...

  10. 安装google cloud sdk报错解决方法总结(超全)

    前提:python环境最好是2.7,如果是python3可能会出很多小毛病:能用64位系统就尽量用64位,32位系统安装也很多毛病 一.Error1:Unzip Failed: Error openi ...