首先贴出最终导出的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. SpringMVC 完美解决PUT请求参数绑定问题(普通表单和文件表单)

    一 解决方案 修改web.xml配置文件 将下面配置拷贝进去(在原有的web-app节点里面配置 其它配置不变) <!-- 处理PUT提交参数(只对基础表单生效) --> <filt ...

  2. Python3中isdigit(), isdecimal(), isnumeric()的区别和字符串的常用方法

    # 全部小写 string.lower() # 全部大写 string.upper() # 是否全部小写 string.islower() # 是否全部大写 string.isupper() # 首字 ...

  3. 用python实现数字图片识别神经网络--启动网络的自我训练流程,展示网络数字图片识别效果

    上一节,我们完成了网络训练代码的实现,还有一些问题需要做进一步的确认.网络的最终目标是,输入一张手写数字图片后,网络输出该图片对应的数字.由于网络需要从0到9一共十个数字中挑选出一个,于是我们的网络最 ...

  4. Python发送邮件(最全)

    简单邮件传输协议(SMTP)是一种协议,用于在邮件服务器之间发送电子邮件和路由电子邮件. Python提供smtplib模块,该模块定义了一个SMTP客户端会话对象,可用于使用SMTP或ESMTP侦听 ...

  5. CSS命名规范(规则)常用的CSS命名规则

    CSS命名规范(规则)常用的CSS命名规则   CSS命名规范(规则)常用的CSS命名规则   头:header   内容:content/container   尾:footer ...

  6. 欢迎来怼--第二十九次Scrum会议

    一.小组信息 队名:欢迎来怼 小组成员 队长:田继平 成员:李圆圆,葛美义,王伟东,姜珊,邵朔,阚博文 小组照片 二.开会信息 时间:2017/11/17 15:55~16:25,总计30min. 地 ...

  7. Java面向对象程序设计

    北京电子科技学院(BESTI)                                                                                 实    ...

  8. 20162325 金立清 S2 W3 C13

    20162325 2017-2018-2 <程序设计与数据结构>第3周学习总结 教材学习内容概要 查找是在一组项内找到指定目标或是确定目标不存在的过程 高效的查找使得比较的次数最少 Com ...

  9. Task 6.2站立会议三

    今天我完成了软件的主要聊天界面的视频通话和语音通话的部分功能,过程中遇到很多不会的知识.因为使用的是C#,虽然很容易上手但是还会存在很多不懂得内容.

  10. StringBuffer 与 StringBuilder类的使用

    /*如果需要频繁修改字符串 的内容,建议使用字符串缓冲 类(StringBuffer). StringBuffer 其实就是一个存储字符 的容器. 笔试题目:使用Stringbuffer无 参的构造函 ...