首先贴出最终导出的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. Python学习之路:NumPy进阶

    import numpy as np; #创建数组的四种办法 ##可以传入任何类数组 a = np.array([0,1,2,3,4]); b = np.array((0,1,2,3,4)); c = ...

  2. 3、ObjectARX开发创建直线、圆、圆弧和修改对象属性

    一.本节课程 Arx二次开发创建直线.圆.圆弧和修改对象属性 二.本节要讲解的知识点 1.如何应用C++ ARX二次开发创建直线. 2.如何应用C++ ARX二次开发创建圆. 3.如何应用C++ AR ...

  3. Hacknet 玩后感

    这款游戏的主题是黑客模拟.玩家需要帮助雇主搞定各种乱七八糟的需求. 你需要使用各种工具和各种linux命令行来获取对方电脑的Root权限.然后就是各种增删改查... 解密部分设计的太过简单,导致玩的时 ...

  4. PHP核心技术——继承与多态

    继承: class person{ public $name='Tom'; public $gender; static $money=10000; public function __constru ...

  5. Docker容器的启动与停止

    启动docker:systemctl start docker 停止docker:systemctl stop docker 重启docker:systemctl restart docker 查看d ...

  6. 开源ITIL管理软件iTop 2.5-2.6安装

    环境说明 : 操作系统centos 7.itop版本 iTop-2.5.0-3935.数据库:mariadb iTop 2.5只支持PHP5.6以上版本,本例安装的是php72w版本 1.下载链接: ...

  7. Django_事务

    介绍 函数说明 from django.db import transaction transaction.atomic # 原子性操作,把一系列操作当做一个整体,错了则集体回退 transactio ...

  8. CS小分队第二阶段冲刺站立会议(5月31日)

    昨日成果:查找相关C#资料,清楚一些bug 遇到问题:系统获取的图标分辨率太低,网上找来的获取图标的代码看不太懂 今日计划:完善获取文件图标功能,并且能够删除获取的图标文件

  9. 软工1816 · 作业(十二)Beta答辩总结

    组长博客 宣传视频 github团队项目仓库 本组成员 队员姓名与学号 124 王彬(组长) 206 赵畅 215 胡展瑞 320 李恒达 131 佘岳昕 431 王源 206 陈文垚 209 陈志炜 ...

  10. 05_Java基础语法_第5天(方法)_讲义

    今日内容介绍 1.方法基础知识 2.方法高级内容 3.方法案例 01方法的概述 * A: 为什么要有方法 * 提高代码的复用性 * B: 什么是方法 * 完成特定功能的代码块. 02方法的定义格式 * ...