后台代码

public void ToExcel(){

//第一步:获取模版文件物理路径

string file_0 = Server.MapPath("/Content/Excel/ExportExcel.xlsx");

//第二步:定义输入流

FileStream stream_0 = new FileStream(file_0, FileMode.Open, FileAccess.Read);

//第三步:判断模版excel文件的版本,创建工作簿

IWorkbook book = null;

if (file_0.IndexOf(".xlsx") > 0){

book = new XSSFWorkbook(stream_0);

}else if (file_0.IndexOf(".xls") > 0){

book = new HSSFWorkbook(stream_0);

}

//第四步:创建工作簿sheet页

ISheet sheet = book.GetSheet("Sheet1");

//第五步:遍历数据导入工作簿

for (int i = 1; i < list.Count; i++) {//list是数据源,可以是dt,也可以是List<>,可以自己写方法获取,调用datagrid的方法,也可以利用session(导出当前页时)

//(int等数据类型)this.HttpContent.Session["key"] = value;

IRow row = sheet.CreateRow(i);

row.CreateCell(0).SetCellValue("测试");

row.CreateCell(1).SetCellValue("测试");

row.CreateCell(1).SetCellValue(dd);//若dd是dateTime类型的数据则导出到excel表格时只显示一个数值,需要做如下转换

//dd.ToString("yyyy-mm-dd hh:mm:ss") ,转换后插入表格则显示指定的格式

}

//第六步:定义输出流,将工作簿写到输出流

string file_1 = Server.MapPath("/Content/Excel/downExcel.xlsx");

//.xls格式的excel可以加扩展名.xls,但.xlsx格式的加上扩展名会报错。

//扩展名.xls时,可以在服务器预先设置下载模板,字段的格式都可以在下载模板中设置并会应用到下载后的excel中

//扩展名为.xlsx时,无法预先设置下载模板,下载下来打不开;要求此处定义的路径不存在,执行时会自动创建,可以避免前面提到的错误。

//但因此会在服务器新建一个downExcel.xlsx文件,为了避免以后导出出错,需要及时删除

//if (System.IO.File.Exists(file_1))  { System.IO.File.Delete(file_1);}

using (FileStream stream_1 = System.IO.File.OpenWrite(file_1)){

book.Write(stream_1);

}

//第七步:写入客户端

System.IO.FileInfo filet = new System.IO.FileInfo(file_1);

Response.Clear();

Response.Charset = "GB2312";

Response.ContentEncoding = System.Text.Encoding.UTF8;

// 添加头信息,为"文件下载/另存为"对话框指定默认文件名

if (file_0.IndexOf(".xlsx") > 0){

Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode("订单详情.xlsx"));

}else if (file_0.IndexOf(".xls") > 0){

Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode("订单详情.xls"));

}  //当excel是.xls类型时可以正常发挥作用,但xlsx则不行。Server.UrlEncode采用utf-编码,除文字外数字字母均可以,文字会显示一串乱码。

绿色部分也可以改为: Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(""));此时默认文件名为方法名

若非要显示指定文字: Response.AddHeader("Content-Disposition", "attachment; filename=默认文件名.xlsx");此时.xlsx不会显示出来,是扩展名

// 添加头信息,指定文件大小,让浏览器能够显示下载进度

Response.AddHeader("Content-Length", filet.Length.ToString());

// 指定返回的是一个不能被客户端读取的流,必须被下载

Response.ContentType = "application/ms-excel";

// 把文件流发送到客户端

Response.WriteFile(filet.FullName);

// 停止页面的执行

Response.End();

if (System.IO.File.Exists(file_1))
      {
         System.IO.File.Delete(file_1);
      }
      stream_0.Close();

}

注意:--ExportExcel.xls是模版文件;downExcel.xls是下载文件(扩展名为.xlsx,一定不能存在);

--执行程序过程中会把创建的excel工作簿写入downExcel.xls里面,在根据downExcel.xls的物理路径写入客户端提供下载

导出excel-模版的更多相关文章

  1. 导出excel模版

    方法一: public void ToExcel(){ //第一步:获取模版物理路径 string file_1 = Server.MapPath("/Content/Excel/downE ...

  2. JAVA实现Excel导出数据(以写好的Excel模版导出)

    工作中经常会有将后台数据以Excel导出的功能. 简单的方法有将response的contentType设置为application/vnd.ms-excel: 或在JSP页面直接设置成: <% ...

  3. jxls使用模版导出Excel

    /**     * 使用模版导出Excel     */    @SuppressWarnings({ "unchecked", "deprecation" } ...

  4. java+jxls利用excel模版进行导出

    大多时候会出现需要导出excel的功能,利用poi可以实现简单的导出,可以说poi的功能非常强大可以做到细节的定制化操作,但相对于在office操作excel,利用poi完全生成excel会显得非常复 ...

  5. 按模版导出Excel

    实现效果: excel模版: ExcelHandle.java package com.common.utils; import java.io.File; import java.io.FileIn ...

  6. [poi使用]使用excel模版导出excel

    ​ Apache POI是基于Office Open XML标准(OOXML)和Microsoft的OLE 2复合文档格式(OLE2)处理各种文件格式的开源项目.简而言之,您可以使用Java读写MS ...

  7. POI3.10 根据Excel模版导出数据测试

    1:所需jar包 2:Mysql数据库表内容如下: 3:代码结构如下: (1)User.java public class User { private int id; private String ...

  8. 导出Excel(导出一个模版)

    有时,客户需要一个标准的模板来填东西,然后在导入 这时可以弄好excel模板,供导出 /** * 导出excel模板文件 * @param request * @param response * @r ...

  9. 利用poi导出Excel

    import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.r ...

  10. Java报表工具FineReport导出EXCEL的四种API

    在实际的应用中会经常需要将数据导出成excel,导出的方式除原样导出还有分页导出.分页分sheet导出和大数据量导出.对于excel 2003版,由于限制了每个sheet的最大行数和列数,大数据量导出 ...

随机推荐

  1. LeetCode 114. 二叉树展开为链表(Flatten Binary Tree to Linked List)

    题目描述 给定一个二叉树,原地将它展开为链表. 例如,给定二叉树 1 / \ 2 5 / \ \ 3 4 6 将其展开为: 1 \ 2 \ 3 \ 4 \ 5 \ 6 解题思路 二叉树转化为链表的基本 ...

  2. iframe 跨域传参

    parent-index.html: (本地起服务,放在5000端口上) <div class="content"> <iframe src="http ...

  3. win7配置flutter报错 运行flutter doctor报错及解决方法

    先按照官方文档进行配置 win10下按照flutter官方文档进行部署flutter 基本没有任何问题 win7情况下 按照官方文档操作后 前面也都可以正常进行 直到 win7下运行flutter d ...

  4. ipv4 ipv6 求字符串和整数一一映射的算法 AmazonOrderId

    字符串和整数一一映射的算法 公司每人的英文名不同,现在给每个英文名一个不同的数字编号,怎么设计? 走ipv4/6  2/32 2/128就够了,把“网段”概念对应到“表或库”,ip有a_e5类,这概念 ...

  5. TensorFlow 学习(6)———TensorFlow运作方式

    本部分主要涉及到TensorFlow的运作方式和主要操作 所需的代码在https://github.com/tensorflow/tensorflow/tree/master/tensorflow/e ...

  6. SSH2配置

    Ubuntu14.04配置openSSH-server时报错,很有可能是因为如下的报错原因 这个问题大概应该是你的/etc/apt/的源有问题,但大概可以这么解决:1.sudo apt-get pur ...

  7. 八十九:redis之python操作redis

    安装:pip install redis 连接 字符串操作 插入值 获取 删除值 列表操作,更多操作见源码 添加 获取 集合操作,更多操作见源码 哈希操作,更多操作见源码 事务操作:cache.pip ...

  8. mysql双主架构

    注意:最好不要用innodedb来同步数据库,要用databus来同步数据库,数据量大要用上mycat中间件 Mysql主主同步环境部署: centos 7.4 三台云主机: mysql1 :10.1 ...

  9. 一步一步搭建:spark之Standalone模式+zookeeper之HA机制

    理论参考:http://www.cnblogs.com/hseagle/p/3673147.html 基于3台主机搭建:以下仅是操作步骤,原理网上自查 :1. 增加ip和hostname的对应关系,跨 ...

  10. PTA --- 天梯赛 L1-064 估值一亿的AI核心代码

    L1-064 估值一亿的AI核心代码 (20 point(s)) 本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是: 无论用户说什么,首先把对方说的话在一行中原样打印出来: 消除原文中多 ...