导出excel-模版
后台代码
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-模版的更多相关文章
- 导出excel模版
方法一: public void ToExcel(){ //第一步:获取模版物理路径 string file_1 = Server.MapPath("/Content/Excel/downE ...
- JAVA实现Excel导出数据(以写好的Excel模版导出)
工作中经常会有将后台数据以Excel导出的功能. 简单的方法有将response的contentType设置为application/vnd.ms-excel: 或在JSP页面直接设置成: <% ...
- jxls使用模版导出Excel
/** * 使用模版导出Excel */ @SuppressWarnings({ "unchecked", "deprecation" } ...
- java+jxls利用excel模版进行导出
大多时候会出现需要导出excel的功能,利用poi可以实现简单的导出,可以说poi的功能非常强大可以做到细节的定制化操作,但相对于在office操作excel,利用poi完全生成excel会显得非常复 ...
- 按模版导出Excel
实现效果: excel模版: ExcelHandle.java package com.common.utils; import java.io.File; import java.io.FileIn ...
- [poi使用]使用excel模版导出excel
Apache POI是基于Office Open XML标准(OOXML)和Microsoft的OLE 2复合文档格式(OLE2)处理各种文件格式的开源项目.简而言之,您可以使用Java读写MS ...
- POI3.10 根据Excel模版导出数据测试
1:所需jar包 2:Mysql数据库表内容如下: 3:代码结构如下: (1)User.java public class User { private int id; private String ...
- 导出Excel(导出一个模版)
有时,客户需要一个标准的模板来填东西,然后在导入 这时可以弄好excel模板,供导出 /** * 导出excel模板文件 * @param request * @param response * @r ...
- 利用poi导出Excel
import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.r ...
- Java报表工具FineReport导出EXCEL的四种API
在实际的应用中会经常需要将数据导出成excel,导出的方式除原样导出还有分页导出.分页分sheet导出和大数据量导出.对于excel 2003版,由于限制了每个sheet的最大行数和列数,大数据量导出 ...
随机推荐
- HTTP中GET与POST的区别颠覆式的理解
关于http中的get和post你轻轻松松的给出了一个“标准答案”: GET在浏览器回退时是无害的,而POST会再次提交请求. GET产生的URL地址可以被Bookmark,而POST不可以. GET ...
- java中线程状态
刚开始接触java时,就觉得多线程是一个障碍,不容易理解,当时选择了跳过,不过工作一段时间后,发现这块还是需要深入研究一下的,及时平时工作中不使用多线程,但一定会使用web容器,比如tomcat,也是 ...
- Jenkins Publish FTP远程部署过程
步骤: 1.安装FileZilla FTP Server 2.添加FTP账号: 1.Edit——Users——Add 2.Edit——Users——Shared folders 3.下载FileZil ...
- http1.1管线话 vs htttp2.0 多路复用
图中第一种请求方式,就是单次发送request请求,收到response后再进行下一次请求,显示是很低效的. 于是http1.1提出了管线化(pipelining)技术,就是如图中第二中请求方式,一次 ...
- javascript之Prototype属性
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- [Python]切换工作目录|python将目录切换为脚本所在目录
Python使用os.chdir命令切换python工作目录 代码示例: In []: import os In []: os.system("pwd") /home/wangju ...
- 系统启动热键(Boot Hotkey)
1.HP ENVY 13 F1 --> 系统信息F2 --> 系统检测F9 --> 启动设备选项F10 --> 设置BIOSF11 --> 系统恢复ENTER --> ...
- Aes加密/解密示例项目
#AesEncrypt:Aes加密/解密示例项目 <br> 附件中的“AesEncrypt.zip”是本项目的exe文件,可直接下载下来运行和查看. *高级加密标准(英语:Advanced ...
- 解决 nw 报错 net::ERR_UNSAFE_PORT
今天 nw 应用里面的前端请求突然不发送了,也没有异常的信息,后来换上开发版 nw 立刻就发现了报错: net::ERR_UNSAFE_PORT 这个错误的意思很明显,就是请求的 http 端 ...
- django中聚合aggregate和annotate GROUP BY的使用方法
接触django已经很长时间了,但是使用QuerySet查询集的方式一直比较低端,只会使用filter/Q函数/exclude等方式来查询,数据量比较小的时候还可以,但是如果数据量很大,而且查询比较复 ...