java 生成execl下载
/**
* execl Export
*/
private void createExecl(HttpServletRequest request, HttpServletResponse response, List<PlaneStatement> list)
{
String docsPath = request.getSession().getServletContext().getRealPath("docs");
String fileName = "export2007_" + System.currentTimeMillis() + ".xlsx";
String filePath = docsPath + FILE_SEPARATOR + fileName;
System.out.println("docsPath = " + docsPath);
System.out.println("filePath=" + filePath);
File file = new File(docsPath);
if(!file.exists()){
file.mkdir();
} OutputStream os = null;
try
{
// 输出流
os = new FileOutputStream(filePath);
// 工作区 XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("sheet1"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
for (int i = 0; i <= list.size(); i++)
{
// 创建第一个sheet
// 生成第一行
XSSFRow row = sheet.createRow(i);
if (i != 0)
{
PlaneStatement p = list.get(i-1);
System.out.println("execl:"+p);
if(p.getId()!=null){
row.createCell(0).setCellValue(p.getId());
} }
else
{
row.createCell(0).setCellValue("序号");
}
}
// 写文件
wb.write(os);
}
catch(Exception e)
{
e.printStackTrace();
} finally
{
if (os != null)
{
try
{
os.close();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
SysUtils.download(filePath, response);
}
/**
* 下载
*
* @param path
* @param response
*/
public static void download(String path, HttpServletResponse response)
{
InputStream fis = null;
OutputStream toClient = null;
File file = null;
try
{
// path是指欲下载的文件的路径。
file = new File(path);
// 取得文件名。
String filename = file.getName();
// 以流的形式下载文件。
fis = new BufferedInputStream(new FileInputStream(path));
byte[] buffer = new byte[fis.available()];
fis.read(buffer); // 清空response
response.reset();
// 设置response的Header
response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));
response.addHeader("Content-Length", "" + file.length());
toClient = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/vnd.ms-excel;charset=gb2312");
toClient.write(buffer);
toClient.flush(); }
catch(IOException ex)
{
ex.printStackTrace();
} finally
{ try
{
if (fis != null)
{
fis.close();
}
if (toClient != null)
{
toClient.close();
}
}
catch(IOException e)
{
e.printStackTrace();
}
// 删除文件
if(file.exists()){
file.delete();
}
}
}
private static final String FILE_SEPARATOR = System.getProperties().getProperty("file.separator");
java 生成execl下载的更多相关文章
- 【转】Java生成plist下载ipa文件
我们在上传ipa想要安装的时候必须要通过plist文件去下载,并且还要遵循 itms-services协议. 意思就是,第一步我们要生成一个plist文件, 第二步生成一个html文件,用来指向pli ...
- 报表生成poi----java操作java对象生成execl表单
1.Apache POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能. .NET的开发人员则 ...
- java 生成简单word(利用Itext工具),生成简单Excel,以及下载笔记
1.java 生成简单word(包含图片表格) pom中加入itext 相关依赖 <dependency> <groupId>com.lowagie</groupId&g ...
- Java生成和操作Excel文件(转载)
Java生成和操作Excel文件 JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该A ...
- 利用JAVA生成二维码
本文章整理于慕课网的学习视频<JAVA生成二维码>,如果想看视频内容请移步慕课网. 维基百科上对于二维码的解释. 二维条码是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图 ...
- JAVA生成条形码
1.下载生成条形码所需要的jar包barcode4j.jar: 2.java生成条形码代码 import java.awt.image.BufferedImage;import java.io.Fil ...
- Java生成CSV文件实例详解
本文实例主要讲述了Java生成CSV文件的方法,具体实现步骤如下: 1.新建CSVUtils.java文件: package com.saicfc.pmpf.internal.manage.utils ...
- java生成简单Excel工作薄
前言: 代码都是建立在实际需求上的,上周做完一个调外部电影券接口的项目,这周产品又要excel表格,大致内容为:券所属影院.图片URL.等信息制作为excel表格,把每次同步过来的数据给他分析. jx ...
- Java生成名片式的二维码源码分享
世界上25%的人都有拖延症——但我觉得这统计肯定少了,至少我就是一名拖延症患者.一直想把“Java生成名片式(带有背景图片.用户网络头像.用户昵称)的二维码”这篇博客分享出来,但一直拖啊拖,拖到现在, ...
随机推荐
- LeetCode 237 ——删除链表中的结点
1. 题目 2. 解答 因为给定的只有一个待删除的结点指针,我们并不知道其前面结点,所以需要将待删除结点后面的结点值复制到前面结点去,然后指向其后的第二个结点即可. /** * Definition ...
- kaldi GMM模型解码指令 gmm-latgen-faster详解
目录 - 作用: - 用法: - 可选项及含义: - 使用实例: - 作用: Generate lattices using GMM-based model. 生成基于GMM模型的lattice词格) ...
- iOS-显示日期的转换,今天,昨天,前天
+ (NSString *)stringWithDate:(NSDate *)date{ // 1.获得年月日 NSCalendar *calendar = [NSCalendar currentCa ...
- 入口文件-npm run dev
如果你是用vue.js官网提供的脚手架工具并沿用默认配置的话,你执行npm run dev的时候会出来页面,是因为你根目录下的package.json文件里script配置了"dev&quo ...
- 【log4net】- 日志使用教程
一.log4net简介: 1. Log4net的优点: 几乎所有的大型应用都会有自己的用于跟踪调试的API.因为一旦程序被部署以后,就不太可能再利用专门的调试工具了.然而一个管理员可能需要有一套强大的 ...
- RegExp & bug
RegExp & bug translated bug // OK && tranlate `/` let new_obj_reg = new RegExp(`^(([^< ...
- BZOJ4560 JLOI2016字符串覆盖(kmp+贪心+状压dp+单调队列)
首先kmp求出每个子串能放在哪些位置.接下来的两部分贪心和状压都可以,各取比较方便的. 最大值考虑贪心.考虑枚举子串的左端点出现顺序,在此基础上每个子串的位置肯定都应该尽量靠前,有是否与上个子串有交两 ...
- CF985F Isomorphic Strings
题目描述 You are given a string s s s of length n n n consisting of lowercase English letters. For two g ...
- BZOJ 2500 幸福的道路(race) 树上直径+平衡树
structHeal { priority_queue<int> real; priority_queue<int> stack; void push(int x){ real ...
- codeforces 1015B
B. Obtaining the String time limit per test 1 second memory limit per test 256 megabytes input stand ...