private static final String SHEET_NAME = "培养计划表";

/**
* @param response
* @param trainingName
* @return
*/
@RequestMapping("/exportTrainingPlanMessageToExcel.do_")
@ResponseBody
public void exportTrainingPlanMessageToExcel(HttpServletResponse response, @RequestParam("trainingName") String trainingName) {
//文件的默认保存名
String fileName = "exportTrainingPlanMessageToExcel.xls"; List<List<Object>> paramList = trainingPlanService.getParamList(trainingName); ExportEmployeeMessageToExcel.exportDataToExcel(fileName, response, paramList, SHEET_NAME);
}
@Override
public List<List<Object>> getParamList(String trainingName) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("trainingName", trainingName); List<List<Object>> resultList = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List<TrainingPlan> dataList = trainingPlanDao.getTrainingPlanByTrainingName(paramMap); //添加excel文件表头
List<Object> headList = new ArrayList<>();
headList.add("创建时间");
headList.add("知识技能"); resultList.add(headList); //添加excel文件数据
for (TrainingPlan trainingPlan : dataList) {
list.add(sdf.format(trainingPlan.getCreateTime()));
list.add(trainingPlan.getKnowledgeSkills()); resultList.add(list);
}
return resultList;
}
public class ExportEmployeeMessageToExcel {

    private static final Logger log = LoggerFactory.getLogger(ExportEmployeeMessageToExcel.class);

    /**
* 批量将数据导入到excel中
* @param fileName 生成文件的名字
* @param response
* @param paramList 要导入到excel中所有的数据
* @param sheetName excel sheet名字
* @return
*/
public static void exportDataToExcel(String fileName, HttpServletResponse response, List<List<Object>> paramList, String sheetName){
/**
* 以下为生成Excel操作
*/
// 1.创建一个workbook,对应一个Excel文件
HSSFWorkbook wb = new HSSFWorkbook();
// 2.在workbook中添加一个sheet,对应Excel中的一个sheet
HSSFSheet sheet = wb.createSheet(sheetName);
// 3.在sheet中添加表头第0行,老版本poi对excel行数列数有限制short
HSSFRow row = sheet.createRow(0); /*// 设置表头
HSSFCell cell = row.createCell(0);
cell.setCellValue("表头1");
cell.setCellStyle(style); cell = row.createCell(1);
cell.setCellValue("表头2");
cell.setCellStyle(style); cell = row.createCell(2);
cell.setCellValue("表头3");
cell.setCellStyle(style); cell = row.createCell(3);
cell.setCellValue("表头4");
cell.setCellStyle(style); cell = row.createCell(4);
cell.setCellValue("表头5");
cell.setCellStyle(style);*/ // 循环将数据写入Excel,包括表头
for (int i = 0; i < paramList.size(); i++) {
row = sheet.createRow((int) i);
List list= paramList.get(i);
// 创建单元格,设置值
for (int j = 0; j < list.size(); j++) {
row.createCell(j).setCellValue(String.valueOf(list.get(j)));
}
} downloadExcel(wb, response, fileName); } /**
* 将导好数据的excel文件下载下来,并打开下载页面
* @param fileName 生成文件的名字
* @param response
* @return
*/
public static void downloadExcel(HSSFWorkbook wb, HttpServletResponse response, String fileName){
try {
ByteArrayOutputStream os = new ByteArrayOutputStream();
wb.write(os);
byte[] content = os.toByteArray();
InputStream is = new ByteArrayInputStream(content);
// 设置response参数,可以打开下载页面
response.reset();
response.setContentType("application/octet-stream; charset=UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=" + new String(fileName.getBytes(),"ISO8859-1"));
ServletOutputStream out = response.getOutputStream();
BufferedInputStream bis = null;
BufferedOutputStream bos = null; try {
bis = new BufferedInputStream(is);
bos = new BufferedOutputStream(out);
byte[] buff = new byte[1024];
int bytesRead;
// Simple read/write loop.
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
} catch (Exception e) {
log.error("异常情况为:" + e.getMessage());
} finally {
if (wb != null) {
wb.close();
}
if (bis != null) {
bis.close();
}
if (bos != null) {
bos.close();
}
}
} catch (IOException e) {
log.error("异常情况为:" + e.getMessage());
}
}
}

POM:

<!-- poi,excel解析xls格式 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<!-- poi-ooxml,excel解析xlsx格式 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency> <!--excel文件不需要转码成二进制-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<encoding>UTF-8</encoding>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>xls</nonFilteredFileExtension>
<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>

将数据导出到 excel ,然后下载下来的更多相关文章

  1. abp中文件下载,将内存数据导出到Excel并下载

    1.数据导出为Excel的Stream using System; using System.Collections.Generic; using System.IO; using Abp.Colle ...

  2. DataTable数据导出到Excel,并发送到客户端进行下载

    本代码实现思路是:页面显示和导出分开,导出的数据和用于页面显示的是同一查询数据方式,所以也是同样的数据,只是在导出数据时从数据库重新捞了一次数据.此导出数据方式会先将数据保存到Excel中,然后将创建 ...

  3. 数据导出至Excel文件--好库编程网http://code1.okbase.net/codefile/SerializeHelper.cs_2012122018724_118.htm

    using System; using System.IO; using System.Data; using System.Collections; using System.Data.OleDb; ...

  4. 将datagrid中数据导出到excel中 -------<<工作日志2014-6-6>>

    前台datagrid数据绑定 #region 导出到excel中    /// <summary>    /// 2014-6-6    /// </summary>    / ...

  5. Qt中将QTableView中的数据导出为Excel文件

    如果你在做一个报表类的程序,可能将内容导出为Excel文件是一项必须的功能.之前使用MFC的时候我就写过一个类,用于将grid中的数据导出为Excel文件.在使用了QtSql模块后,我很容易的将这个类 ...

  6. 使用PHPExcel将数据导出至Excel

    安装类库 从GitHub上下载PHPExcel类库 地址:https://github.com/PHPOffice/PHPExcel 解压后将Classes文件夹移动到ThinkPHP的extend目 ...

  7. Asp.net网页中DataGridView数据导出到Excel

    经过上网找资料,终于找到一种可以直接将GridView中数据导出到Excel文件的方法,归纳方法如下: 1. 注:其中的字符集格式若改为“GB2312”,导出的部分数据可能为乱码: 导出之前需要关闭分 ...

  8. struts2结合poi-3.7实现数据导出为excel

    我们在处理数据的时候,有可能要将数据导出到excel文件中,那么java中是怎么实现的呢?apache开发的poi就可以帮我们实现啦,它也是开源的代码,导入相应的jar包,就可以轻松实现,下面让我们来 ...

  9. 学习笔记 DataGridView数据导出为Excel

    DataGridView数据导出为Excel   怎样把WinForm下的“DGV”里的绑定数据库后的数据导出到Excel中. 比如:在窗体里有个一“DGV”,DataGridView1,绑定了数据源 ...

  10. 将C1Chart数据导出到Excel

    大多数情况下,当我们说将图表导出到Excel时,意思是将Chart当成图片导出到Excel中.如果是这样,你可以参考帮助文档中保存和导出C1Chart章节. 不过,也有另一种情况,当你想把图表中的数据 ...

随机推荐

  1. anroid学习笔记(1)

    大概是2个月前,报名了慕课的android就业班课程. 算是补全了当初博客分类的最初设计. 安卓和前端比较: 1,java在安卓开发中的作用,现在我的认识是和JavaScript在前端web开发中有很 ...

  2. MYSQL 中 MyISAM与InnoDB两者之间区别与选择,详细总结,性能对比

    1.MyISAM:默认表类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.不 ...

  3. flutter searchDelegate搜索页

    使用searchDelegate可以很轻松实现以下页面 import 'package:flutter/material.dart'; typedef SearchItemCall = void Fu ...

  4. JavaScript 格式化数字成金额格式

    在看公司一个项目的JavaScript代码时,发现一段JavaScript代码,是把数字格式化成金额格式 比如: 12345.678 格式化成  12,345.68 看完代码后,google了一下,发 ...

  5. oracle 查看数据库和表命令

    1.su – oracle 不是必需,适合于没有DBA密码时使用,可以不用密码来进入sqlplus界面. 2.sqlplus /nolog 或sqlplus system/manager 或./sql ...

  6. Python 自动化

    一.Win32 GUI自动化测试模块: 1. pywinauto: 下载链接:http://sourceforge.net/projects/pywinauto/ 在线文档:http://pywina ...

  7. 重启Tomcat, vsftpd

    关闭,启动,查看Tomcat /usr/local/tomcat8/bin/shutdown.sh /usr/local/tomcat8/bin/startup.sh tail -300f /usr/ ...

  8. js中的堆内存和栈内存

    我们常常会听说什么栈内存.堆内存,那么他们到底有什么区别呢,在js中又是如何区分他们的呢,今天我们来看一下. 一.栈内存和堆内存的区分 一般来说,栈内存主要用于存储各种基本类型的变量,包括Boolea ...

  9. python多进程——进程间通信

    (一)进程锁 抢票的例子: # -*- coding:utf-8 -*- from multiprocessing import Process, Lock import time import js ...

  10. sh脚本实战

    做了什么东西还是要尽快移动到博客上,不然回头看自己写的东西已经看不懂了... 凭着回忆+搜资料,把当初写sh脚本的过程写上来. 首先新建一个.sh文件,用vim就可以 在sh的第一行,写上 #!/bi ...