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

前台界面如下:

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

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

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

  1. @RequestMapping("export.do")
  2. public void exportExecl(HttpServletRequest request,
  3. HttpServletResponse response) {
  4. String beginDate = request.getParameter("dateid")+"-01";
  5. int maxDay=getCurrMonthDays(beginDate);
  6. List<MobileManage> list = getDataList(beginDate);
  7. String title =beginDate.substring(0, 4)+"年"+beginDate.subSequence(5, 7)+"月"+ "员工工作详情表";
  8. String[] headers1 = new String[33];// 表头1数组 日期,1,2,3...
  9. String[] headers2 = new String[31];// 表头2数组 星期,一二三...
  10. headers1[0]="类型";
  11. headers1[1]="姓名";
  12. for (int i = 1; i <=maxDay; i++) {
  13. String date=beginDate.substring(0,8)+(i<10?"0"+i:i+"");
  14. String week=getWeek(date);
  15. headers1[i+1]=i+"";
  16. headers2[i-1]=week;
  17. }
  18. HSSFWorkbook workbook = new HSSFWorkbook();// 生成一个工作簿
  19. HSSFSheet sheet = workbook.createSheet(title);//创建一个表
  20. HSSFCellStyle style = workbook.createCellStyle();//创建一个居中格式
  21. style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平
  22. style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直
  23. sheet.setDefaultColumnWidth(5);//设置默认列宽
  24. sheet.setColumnWidth(0, 10* 256);//设置第一、第二列列宽
  25. sheet.setColumnWidth(1, 10 * 256);
  26. sheet.setDefaultRowHeight((short)300);//设置默认行高
  27. HSSFRow row = sheet.createRow(0);//创建表头一
  28. sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 0)); //设置跨行
  29. sheet.addMergedRegion(new CellRangeAddress(0, 1, 1, 1));
  30. HSSFRow rowWeek=sheet.createRow(1);//创建表头二
  31. HSSFCell cell = null;
  32. //给表头填充数据
  33. for (int i = 0; i < headers1.length; i++) {
  34. cell = row.createCell(i);
  35. cell.setCellValue(headers1[i]);
  36. cell.setCellStyle(style);
  37. }
  38. for (int i = 0; i < headers2.length; i++) {
  39. cell=rowWeek.createCell(i+2);
  40. cell.setCellValue(headers2[i]);
  41. cell.setCellStyle(style);
  42. }
  43. // 遍历集合数据,产生数据行
  44. MobileManage manage = null;
  45. int index = 1;
  46. // 循环写入行
  47. for (int i = 0; i < list.size(); i++) {
  48. index++;
  49. row = sheet.createRow(index);//从第二行开始填充数据(第零和一行是表头)
  50. manage = list.get(i);
  51. cell = row.createCell(0);// 类型
  52. cell.setCellValue(manage.getType());
  53. cell = row.createCell(1);//姓名
  54. cell.setCellValue(manage.getName());
  55. for (int j = 0; j < headers2.length; j++) {//项目编码
  56. cell=row.createCell(j+2);
  57. cell.setCellValue(manage.getDateCodes()[j]==null?"":manage.getDateCodes()[j].getCode());
  58. }
  59. }
  60. response.reset();
  61. try {
  62. title=new String(title.getBytes("gb2312"),"iso8859-1");//设置表格名时中文乱码,进行转码
  63. } catch (UnsupportedEncodingException e1) {
  64. // TODO Auto-generated catch block
  65. e1.printStackTrace();
  66. }
  67. response.setContentType("application/vnd.ms-excel;charset=utf-8");
  68. response.setHeader("Content-Disposition", "attachment;filename="
  69. + title + ".xls");
  70. try {
  71. OutputStream outputStream = response.getOutputStream();
  72. workbook.write(outputStream);
  73. outputStream.flush();
  74. outputStream.close();
  75. } catch (IOException e) {
  76. e.printStackTrace();
  77. }
  78. return;
  79. }

我在网上看到很多人说这里面涉及到设置的一般都要加个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. TPO-21 C1 Find a building for orientation

    TPO-21 C1 Find a building for orientation 第 1 段 1.Listen to a conversation between a student and a p ...

  2. SQL Server存储过程用法介绍

    存储过程其实就是已预编译为可执行过程的一个或多个SQL语句. 通过调用和传递参数即可完成该存储过程的功能. 前面有介绍过存储过程的一些语法,但是没有详细示例,今天我们来一起研究一下存储过程. 提高性能 ...

  3. 5. 使用Flask蓝图(blueprint)

    一直到现在都没有怎么写代码,可能更得比较慢. 作业回顾 先来看一下文章4的作业吧,使用logbook的时候,遇到了时区不对的情况.那么我们怎么去解决这个问题呢? 实际上logbook默认采用的是世界标 ...

  4. Hadoop源码编译环境搭建

    准备工具: maven 3.0.0版本或者更高版本(配置中心库) protocbuff 2.5.0 http://www.zlib.net/ git bash(Windows环境可以用此工具执行编译命 ...

  5. Ubuntu下LimeSDR Mini使用说明

    本文内容.开发板及配件仅限用于学校或科研院所开展科研实验! 淘宝店铺名称:开源SDR实验室 LimeSDR链接:https://item.taobao.com/item.htm?spm=a230r.1 ...

  6. awk之close函数

    echo "21 2 " | awk '{ first[NR]=$ second[NR]=$ }END{ print "======打印第1列并排序:========== ...

  7. lspci命令详解

    基础命令学习目录首页 最近经常用到 lspci -nn | grep Eth 命令,需要学习下PCI总线,找到一篇文章,虽然也是转载,但写的较清晰,再次转载下. http://blog.csdn.ne ...

  8. The serializable class XXX does not declare a static final serialVersionUID field of type long的警告

    原文: http://blog.csdn.net/ultrakang/article/details/41820543

  9. Daily Scrum9 11.13

    昨天的任务已完成. 今日任务: 姓名 今日任务 时长 徐钧鸿 测试SQL包里的代码 2h 张艺 继续搭建还没搭建完的框架 修复bug 2h 黄可嵩 继续进行搜索响应编写 2h 徐方宇 搭建框架 修改b ...

  10. BUAAMOOC-Alpha版本发布说明

    BUAAMOOC-Alpha版本发布说明 本说明为BUAAMOOCv1.0版发布说明. 软件截图 上届软件截图 可以看到上届的界面做的很简陋,对于登录.查看课程列表.观看视频等操作需要跳转多个页面,视 ...