首先贴出最终导出的execl截图吧:

前台界面如下:

点击导出时,为其按钮的onclick事件添加exportDate()函数:

function exportDate(){
var begin_Date=$('#dateid').datebox('getValue');
document.getElementById("exportForm").action="../mobileManage/export.do?begin_Date="+begin_Date;
document.getElementById("exportForm").submit();
}

在后台export.do的代码如下:

@RequestMapping("export.do")
public void exportExecl(HttpServletRequest request,
HttpServletResponse response) {
String beginDate = request.getParameter("dateid")+"-01";
int maxDay=getCurrMonthDays(beginDate);
List<MobileManage> list = getDataList(beginDate);
String title =beginDate.substring(0, 4)+"年"+beginDate.subSequence(5, 7)+"月"+ "员工工作详情表";
String[] headers1 = new String[33];// 表头1数组 日期,1,2,3...
String[] headers2 = new String[31];// 表头2数组 星期,一二三...
headers1[0]="类型";
headers1[1]="姓名";
for (int i = 1; i <=maxDay; i++) {
String date=beginDate.substring(0,8)+(i<10?"0"+i:i+"");
String week=getWeek(date);
headers1[i+1]=i+"";
headers2[i-1]=week;
}
HSSFWorkbook workbook = new HSSFWorkbook();// 生成一个工作簿
HSSFSheet sheet = workbook.createSheet(title);//创建一个表
HSSFCellStyle style = workbook.createCellStyle();//创建一个居中格式
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直
sheet.setDefaultColumnWidth(5);//设置默认列宽
sheet.setColumnWidth(0, 10* 256);//设置第一、第二列列宽
sheet.setColumnWidth(1, 10 * 256);
sheet.setDefaultRowHeight((short)300);//设置默认行高
HSSFRow row = sheet.createRow(0);//创建表头一
sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 0)); //设置跨行
sheet.addMergedRegion(new CellRangeAddress(0, 1, 1, 1));
HSSFRow rowWeek=sheet.createRow(1);//创建表头二
HSSFCell cell = null;
//给表头填充数据
for (int i = 0; i < headers1.length; i++) {
cell = row.createCell(i);
cell.setCellValue(headers1[i]);
cell.setCellStyle(style);
}
for (int i = 0; i < headers2.length; i++) {
cell=rowWeek.createCell(i+2);
cell.setCellValue(headers2[i]);
cell.setCellStyle(style);
}
// 遍历集合数据,产生数据行
MobileManage manage = null;
int index = 1;
// 循环写入行
for (int i = 0; i < list.size(); i++) {
index++;
row = sheet.createRow(index);//从第二行开始填充数据(第零和一行是表头)
manage = list.get(i);
cell = row.createCell(0);// 类型
cell.setCellValue(manage.getType());
cell = row.createCell(1);//姓名
cell.setCellValue(manage.getName());
for (int j = 0; j < headers2.length; j++) {//项目编码
cell=row.createCell(j+2);
cell.setCellValue(manage.getDateCodes()[j]==null?"":manage.getDateCodes()[j].getCode());
}
}
response.reset();
try {
title=new String(title.getBytes("gb2312"),"iso8859-1");//设置表格名时中文乱码,进行转码
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename="
+ title + ".xls");
try {
OutputStream outputStream = response.getOutputStream();
workbook.write(outputStream);
outputStream.flush();
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
return;
}

我在网上看到很多人说这里面涉及到设置的一般都要加个short强转,但是我这样写在火狐谷歌导出并没有什么问题,当然也许不同浏览器等或许会出现问题,以后要是遇到了再说吧.

java中poi进行execl导出的更多相关文章

  1. Java使用POI实现数据导出excel报表

    Java使用POI实现数据导出excel报表 在上篇文章中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式.不仅 ...

  2. java使用poi将html导出word,默认打开页面视图

    <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:o ...

  3. Java使用poi对Execl简单_读和写_操作

    1 /** 一.简单读取Execl的步骤: * 1.通过流来读取Execl并存放到内存中: * 2.通过WorkbookFactory工作簿工厂来读取内存中存放的execl文档流并创建出一个工作簿 * ...

  4. Java使用poi对Execl简单操作_总结

    poi是Apache组织给开发者提供一套操作office(Execl,Word,PowerPoint)等Java API,开发者通过Poi API可以快速的操作office办公软件,以上3篇博文只是一 ...

  5. java使用POI将数据导出放入Excel

    本文主要是将数据库取出的数据按照自定义的行列格式导出到excel中,POI则是实现我们需求所用到的技术. POI介绍 使用spring boot导入相关依赖 获取数据(自行处理) 完整代码实例:创建e ...

  6. java 中Excel的导入导出

    部分转发原作者https://www.cnblogs.com/qdhxhz/p/8137282.html雨点的名字  的内容 java代码中的导入导出 首先在d盘创建一个xlsx文件,然后再进行一系列 ...

  7. Java利用POI实现导入导出Excel表格示例代码

    转自:https://www.jb51.net/article/95526.htm 介绍 Jakarta POI 是一套用于访问微软格式文档的Java API.Jakarta POI有很多组件组成,其 ...

  8. JAVA 通过POI 模版,导出excel

    如有不足,欢迎指正,谢谢 ! 1.Maven引入  POI jar包.模版和结果文件.rar下载 <dependency> <groupId>org.apache.poi< ...

  9. java中poi解析excel(兼容07版本以上及以下:.xls和.xlsx格式)

    package com.genersoft.cbms.ysbz.ExcelDr.cmd; import com.genersoft.cbms.ysbz.ExcelDr.dao.ExcelDrDao; ...

随机推荐

  1. 有序链表转换二叉搜索树(LeetCode)

    将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: 给定有序数组: [-10,-3,0, ...

  2. Python20-Day07

    面向对象之继承与派生 什么是继承? 继承是一种创建新类的方式,新建的类可以继承一个或者多个父类,父类又称为基类或者超类,新建的类称为派生类或者子类 子类会‘遗传’父类的特性,从而解决代码重用问题 py ...

  3. servlet 和 threadlocal 与 web容器(理解threadlocal)

    同步机制采用了“以时间换空间”的方式,提供一份变量,让不同的线程排队访问.而ThreadLocal采用了“以空间换时间”的方式,为每一个线程都提供了一份变量的副本,从而实现同时访问而互不影响. htt ...

  4. oracle安装出错/runInstaller

    http://blog.csdn.net/yabingshi_tech/article/details/48313955 http://www.cnblogs.com/lihaozy/archive/ ...

  5. +new Date()的用法

    var s=+newDate();   var s=+newDate(); 解释如下:=+是不存在的; +new Date()是一个东西; +相当于.valueOf(); 看到回复补充一下.getTi ...

  6. jQuery源码分析之整体框架

    之前只是知道jQuery怎么使用,但是我觉得有必要认真的阅读一下这个库,在分析jQuery源码之前,很有必要对整个jQuery有个整体的框架概念,才能方便后面对jQuery源码的分析和学习,以下是我总 ...

  7. 互评Beta版本(Hello World!——SkyHunter)

    1 基于NABCD评论作品,及改进建议 SkyHunter这款游戏我很喜欢,小时候总玩飞机类的游戏,这款游戏我上课的时候试玩了,在我电脑上运行是很好玩的,音乐震撼,画面玄幻,富有金属音乐的味道,游戏内 ...

  8. Daily Scrum7 11.11

    今日任务: 徐钧鸿:结束了SQL和Affairs的移植,修改了连接池,学习C#和java的正则表达式并且完成相关的移植 张艺:个人阅读作业 黄可嵩:完成高亮显示的移植,进一步移植搜索代码 徐方宇:继续 ...

  9. 20172308 实验三《Java面向对象程序设计 》实验报告

    20172308 2017-2018-2 <程序设计与数据结构>实验三报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 周亚杰 学号:20172308 实验教师:王 ...

  10. Java script 中的面向对象1

    Java script 中的面向对象 对象 对象是Javascript的基本数据类型,对象是一种复合值,将很多的键值对聚合在一起使用.对象可看做是属性的无序集合,每个属性都是一个名/值对.属性名其实是 ...