首先贴出最终导出的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. GitHub笔记(五)——忽略文件、配置别名、搭建服务器

    六.忽略文件 忽略某些文件时,需要编写.gitignore: .gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理! 忽略文件的原则是: 忽略操作系统自动生成的文件,比 ...

  2. maven 添加spring/springmvc依赖项

    <spring.version>4.3.18.RELEASE</spring.version> <dependencies> <!--添加spring.spr ...

  3. python爬虫项目(新手教程)之知乎(requests方式)

    -前言 之前一直用scrapy与urllib姿势爬取数据,最近使用requests感觉还不错,这次希望通过对知乎数据的爬取为 各位爬虫爱好者和初学者更好的了解爬虫制作的准备过程以及requests请求 ...

  4. Linux系统下安装jdk1.8

    JDK安装分为两种方式  一种是解压tar.gz配置安装, 一种是rpm安装,我这里是tar.gz安装方式 一.首先在oracle官方网下载jdk,网址如下:http://www.oracle.com ...

  5. [shell] 一次性赋值多个变量

    管道符是fork子进程,子进程的变量无法传回父进程 [root@XM-v106 ~]# echo "1 2 3" | read a b c;echo $a [root@XM-v10 ...

  6. 20172324《Java程序设计》第3周学习总结

    20172324<Java程序设计>第3周学习总结 教材学习内容总结 随机数,记住要返回的是指定的字符前一个. String类型的一些用法,例如concat(连接),toUpperCase ...

  7. 20162319 实验四 Android程序设计

    Android Stuidio的安装测试: 完成Hello World, 要求修改res目录中的内容,Hello World后要显示自己的学号 ·实验过程 完成任务一,只需在Android应用程序文件 ...

  8. 05慕课网《进击Node.js基础(一)》HTTP概念进阶(同步/异步)

    HTTP模块介绍 支持http协议的更多特性 不缓存请求和响应 API比较底层处理流相关,信息解析 HTTP相关概念 回调 将函数作为参数传到执行函数中,参数函数在执行函数中嵌套执行 function ...

  9. 校友聊---Sprint计划会议总结

    1.产品需求及索引卡: 校友聊的软件我们计划分三步进行设计实现功能:文字聊天.语音聊天.视频聊天.首先第一步我们要实现文字聊天这个功能. 经过调研讨论之后,确定了产品的几个需求:在局域网内实现通信要依 ...

  10. sprint会议1

    昨天:进行第一次站立会议,讨论冲刺阶段,目标,任务认领,制作索引卡. 今天:准备查找安卓APP开发的有关资料,安装有关软件. 遇到的问题:对这方面毫无了解,不知道怎么开始,从哪开始,完全没经验.