poi.jar包

public void downExcel(HttpServletResponse response,Page<ShopApply> page)
throws Exception{

// 第一步,创建一个webbook,对应一个Excel文件
HSSFWorkbook wb = new HSSFWorkbook();
// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet("xxx");

sheet.setDefaultColumnWidth((short) 15);//表格宽度

// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
HSSFRow row = sheet.createRow((int) 0);
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式

HSSFCell cell=null;
//表头
String[] headers={"申请单类型","编号","所属公司","主题","跳转地址","提交人","提交时间","审核状态","审核人","审核时间","资讯状态"};
for(int i=0;i<headers.length;i++){
cell = row.createCell((short) i);
cell.setCellValue(headers[i]);
cell.setCellStyle(style);
}

// 第五步,写入实体数据 实际应用中这些数据从数据库得到,
StringBuffer str=new StringBuffer();
str.append("SELECT s.`c_checkid`,s.c_checkuser,s.c_applytype,g.c_companyname,s.`c_beforetopic`,s.`c_aftertopic`,s.`c_beforeimage`,s.`c_afterimage`,s.`c_checkstatus`,s.`dt_checkdate`,s.`c_adduser`,s.`dt_adddate`,m.`c_manageid`,m.`c_forwardurl`,m.c_isdel FROM shop_check s ,shop_website_manage m ,`global_company` g WHERE s.c_type=6 AND s.`c_businessid`=m.`c_manageid` AND m.c_companyid = g.c_companyid");
Map<String, Object> jsonMap = new HashMap<String, Object>();//定义map
page=this.makingApplyService.getList(str.toString(), page);

List<Object> rs=(List<Object>) page.getQueryList();

for (int i = 0; i < rs.size(); i++)
{
Object obj=rs.get(i);
Map<String, String> objs=(Map<String, String>)obj;

row = sheet.createRow((int) i + 1);

// 第四步,创建单元格,并设置值
row.createCell((short) 0).setCellValue(String.valueOf(objs.get("c_applytype")).equals("0")?"新申请单":"修改类申请单");
row.createCell((short) 1).setCellValue(objs.get("c_manageid"));
row.createCell((short) 2).setCellValue(objs.get("c_companyname"));
row.createCell((short) 3).setCellValue(objs.get("c_aftertopic"));
row.createCell((short) 4).setCellValue(objs.get("c_forwardurl"));

row.createCell((short) 5).setCellValue(objs.get("c_adduser"));
row.createCell((short) 6).setCellValue(df.format(objs.get("dt_adddate"))==null?"":df.format(objs.get("dt_adddate")));

String checkstate="";
if(objs.get("c_checkstatus").equals("0")){
checkstate="待审核";
}else if(objs.get("c_checkstatus").equals("1")){
checkstate="审核通过";
}else if(objs.get("c_checkstatus").equals("2")){
checkstate="审核不通过";
}
row.createCell((short) 7).setCellValue(checkstate);
row.createCell((short) 8).setCellValue(objs.get("c_checkuser"));
row.createCell((short) 9).setCellValue(String.valueOf(objs.get("dt_checkdate")).length()>0?String.valueOf(objs.get("dt_checkdate")):null);

row.createCell((short) 10).setCellValue(String.valueOf(objs.get("c_isdel")).equals("1")?"N":"Y");
}
// 第六步,将文件存到指定位置
try
{
//导出的文件名
String fileName="photo_"+(new SimpleDateFormat("yyyyMMddHH").format(new Date()))+".xls";;

//导出
this.export(wb, this.getFilePath(), fileName);

// 下载Excel
this.download(response, this.getFilePath(), fileName);
}
catch (Exception e)
{
e.printStackTrace();
}
}

/*
* 导出
* @Param 路径,文件名
*
* */
public void export(HSSFWorkbook wb,String filePath,String fileName){
// 第六步,将文件存到指定位置
try
{
long start = System.currentTimeMillis();

//全路径
String filefull=filePath+"/"+fileName;

File floder=new File(filePath);
if (!floder.exists() && !floder.isDirectory())
{
floder.mkdir();
}

FileOutputStream fout = new FileOutputStream(filefull);
wb.write(fout);
fout.flush();
fout.close();
System.out.println("*******导出EXCEL结束*********");
long end = System.currentTimeMillis();
System.out.println("----完成该操作共用的时间是:"+(end-start)/1000);
}
catch (Exception e)
{
e.printStackTrace();
}
}

/*
* 下载
* @Param 路径,文件名
*
* */
public void download(HttpServletResponse response,String filePath , String fileName){

try
{
System.out.println("*******下载EXCEL开始*********");
FileInputStream fis = null;
OutputStream os = null;

//全路径
String filefull=filePath+"/"+fileName;

File file = new File(filefull);
if (!file.exists()) {
System.out.println("文件下载失败:文件或路径错误");

}

fis = new FileInputStream(file);
os = response.getOutputStream();// 取得输出流
response.reset();// 清空输出流
response.setHeader("Content-disposition", "attachment; filename=" + fileName);// 设定输出文件头
response.setContentType("application/x-download");
byte[] mybyte = new byte[8192];
int len = 0;
while ((len = fis.read(mybyte)) != -1) {
os.write(mybyte, 0, len);
}
fis.close();
os.close();
System.out.println("*******下载EXCEL结束*********");
}
catch (Exception e)
{
e.printStackTrace();
}
}

*****************************不生成文件,按一定的格式放到流里*********************

public InputStream getTxtFile(){

setFileName("mobiles_"+(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()))+".txt");//设置导出的Excel名称
Shop shopNum=new Shop();
StringBuffer sf=new StringBuffer();

List datas=this.getService().find();

try{
String str="";
String enter = "\r\n";

for (int i = 0; i < datas.size(); i++) {
shopNum=(Shop) datas.get(i);
if(shopNum.getCMobile() !=null && shopNum.getCMobile() !="" && shopNum.getCMobile().length()>10)
{
str=shopNum.getCMobile() + enter;
sf.append(str);

}
}

}catch(Exception e){
return null;
}

byte[] txt=null;
try{

txt=sf.toString().getBytes("UTF-8");
}catch (Exception e){
txt=sf.toString().getBytes();
}
InputStream input=new ByteArrayInputStream(txt);//用字节数组构造一个输入流

return input;

}

poi excel导出,下载的更多相关文章

  1. thinkphp3.2.3 excel导出,下载文件,包含图片

    关于导出后出错的问题 https://segmentfault.com/q/1010000005330214 https://blog.csdn.net/ohmygirl/article/detail ...

  2. POI excel导出

    ******************************* excel表格导出,使用POI实现 ******************************* 实现导出步骤 --配置导出excel ...

  3. java POI excel 导出复合样式(一个单元格两个字体)

    前言:java poi 导出 excel 时,需要设置一个单元格有多个字体样式,有点类似于富文本. 想要达到的效果(一个单元格里): 我使用的 poi 版本是 <dependency> & ...

  4. poi excel导出 xssf 带下拉框

    需求:导出之后带有二级级联的下拉框.(类似于省市). 最初的思路是怀疑是不是数组内串太多了,导出之后的excel有36行,调试的误区在于刚开始认为对行数有限制,后自己写了一个测试类,才发现不是行数,而 ...

  5. POI Excel导出样式设置

    HSSFSheet sheet = workbook.createSheet("sheetName");    //创建sheet sheet.setVerticallyCente ...

  6. Java利用POI导入导出Excel中的数据

         首先谈一下今天发生的一件开心的事,本着一颗android的心我被分配到了PB组,身在曹营心在汉啊!好吧,今天要记录和分享的是Java利用POI导入导出Excel中的数据.下面POI包的下载地 ...

  7. Java导出excel并下载功能

    我们使用的导出并下载功能是利用一个插件叫POI的插件提供的导出功能,很实用:首先先导入Jar包: Jar包下载地址:http://poi.apache.org/   官方文档地址:http://poi ...

  8. springMVC中使用POI方式导出excel至客户端、服务器实例

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 这里的方法支持导出excel至项目所在服务器,或导 ...

  9. SpringBoot加Poi仿照EasyPoi实现Excel导出

    POI提供API给Java程序对Microsoft Office格式档案读和写的功能,详细功能可以直接查阅API,因为使用EasyPoi过程中总是缺少依赖,没有搞明白到底是什么坑,索性自己写一个简单工 ...

随机推荐

  1. How to use Ajax on Visualforce page on Salesforce platform

    Just use Ajax pattern to call object data from server on visualforce page. Following is the Asynchro ...

  2. cocos2dx游戏开发——微信打飞机学习笔记(一)——开发准备

    一.环境的搭建 1.Windows开发准备: (1)软件下载及安装 •下载Cocos2d-x 最新版本:http://www.cocos2d-x.org/download 或者从Cocos2d-x G ...

  3. Android的Touch事件处理机制

    Android的Touch事件处理机制比较复杂,特别是在考虑了多点触摸以及事件拦截之后. Android的Touch事件处理分3个层面:Activity层,ViewGroup层,View层. 首先说一 ...

  4. lr中定义字符串变量

    需要注意的是数组必须定义为固定的长度,如:char chary[20]: 5C2o"Go!\gm  nHH0 数组的最大长度为32064(32K),否则会出现“too many variab ...

  5. iOS10 UI教程视图的中心位置

    iOS10 UI教程视图的中心位置 center表示的是视图的中心位置属性,这个属性在相对的UI层次结构上工作,和frame类似.center属性是一个在父视图上定义视图的位置的简便方法.center ...

  6. TestNg线程池配置、执行次数配置、超时配置

    使用注解的方式对TestNg线程池配置.执行次数配置.超时配置 注:使用注解来控制测试方法运行的次数和超时时间,timeOut在单线程或者多线程模式下都可用,threadPoolSize设置了线程池的 ...

  7. Block与代理的使用

    本人其实是比较喜欢用Block的,因为用block写出来的代码,让我感觉代码要紧凑一些,看起来的时候,思路要清晰些,所以这估计也就是现在block将要代替代理的原因所在吧! 下面,直接进入主题: 一. ...

  8. sqoop学习

    最近学习了下这个导数据的工具,但是在export命令这里卡住了,暂时排不了错误.先记录学习的这一点吧 sqoop是什么 sqoop(sql-on-hadoop):是用来实现结构型数据(如关系型数据库) ...

  9. spring mvc 注解访问控制器以及接收form数据的方式,包括直接接收日期类型及对象的方法

    Spring 中配置扫描器 <!-- springmvc的扫描器--> <context:component-scan base-package="com.beifeng. ...

  10. 利用Hive实现求两条相邻数据时间差

    1.Hive row_number() 函数的高级用法 row_num 按照某个字段分区显示第几条数据 select imei,ts,fuel_instant,gps_longitude,gps_la ...