首先贴出最终导出的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. Datawhale MySQL 训练营 Task5

    数据导入导出 导入table http://www.runoob.com/mysql/mysql-database-import.html 导出table http://www.runoob.com/ ...

  2. 用shell实现bat批处理的pause命令-追加改进

    我参考了这个文章:用shell实现bat的pause http://linux-wiki.cn/wiki/zh-hans/%E7%94%A8shell%E5%AE%9E%E7%8E%B0bat%E7% ...

  3. 基于Linux-3.9.4内核增加简单的时间片轮转功能

    简单的时间片轮转多道程序内核代码 原创作品转载请注明出处https://github.com/mengning/linuxkernel/ 作者:sa18225465 一.安装 Linux-3.9.4 ...

  4. IPC_Binder_java_1

    title: IPC_Binder_java_1 date: 2017-01-03 21:30:55 tags: [IPC,Binder] categories: [Mobile,Android] - ...

  5. eclipse xml文件中按alt+/没有提示信息

    转载地址:http://blog.sina.com.cn/s/blog_972ddc1b01012mmh.html 今天要写这篇博文是因为遇到这样的不是技术的问题,但找到问题根源再解决这个问题又花费很 ...

  6. vue ,v-for循环对象,不是深度克隆? 数据改变了但是页面元素没有更新。问题解决

    <div id="app"> <ul > <li v-for="(val,key,idx) in list" > {{key ...

  7. 团队博客作业Week4 --- 学霸网站--NABC

    1.需求(Need) 伴随着经济的发展,科学技术取得了飞速的发展,互联网在各行各业的发展中取得了广泛的应用.随着这些事物的发展,我们每个人都会接触到相当庞大的数据.如何在这些数据中找到自己需要的,如何 ...

  8. c# combobox向上展开

    1.问题情境:实际中的下拉框默认向下扩展,如果屏幕下方空间不足,会向上扩展. 向下扩展情况下,有时候会超出form窗体. 2.解决办法: 寻找相关属性无果. 退而求其次,重画item的框.发现Draw ...

  9. delphi 图像处理 图像放大缩小

    procedure TDR_QM_ZP_Form.btn_FDClick(Sender: TObject); //图像放大 begin my_int1 := Trunc( my_int1 * 1.1) ...

  10. 超级迷宫之NABCD

    模式之一:双人模式 N:基于双人之间的竞争与协作,朋友之间可以有一个竞争比赛,一决高下,男女朋友之间适合双人协作模式,共同完成游戏. A:双人竞争模式为双人同起点或不同起点来进行游戏,在竞争的紧张压力 ...