查询数据库,后台定时产出excel文件

java 开启每天定时设定

@Component
@Slf4j
public class sendByMonitorTask {private static final Logger logger = LoggerFactory.getLogger(sendByMonitorTask.class);@Autowiredprivate TaskService taskService;@Scheduled(cron = "0 0 0 * * ?")private void StudentTask() {logger.info("sendByMonitorTask----task::: 开始任务 ");taskService.sendInfoStudentRun();logger.info("sendByMonitorTask----task::: 结束任务 ");}@Scheduled(cron = "0 0 0 * * ?")private void teacherTask() {logger.info("sendByMonitorTask----task::: 开始任务 ");taskService.sendInfoTeacherRun();logger.info("sendByMonitorTask----task::: 结束任务 ");}
}

文件产出,设置下载条件,表头信息等

@Service
public class TaskService {private static final Logger logger = LoggerFactory.getLogger(TaskService.class);public void sendInfoStudentRun() {List<Map<String, Object>> maps = sendInfo(2);export(maps, 2);}public void sendInfoTeacherRun() {List<Map<String, Object>> maps = sendInfo(2);export(maps, 2);}public List<Map<String, Object>> sendInfo(Integer select) {List<Map<String, Object>> list = Lists.newArrayList();try {DateTime dateTime = DateTime.now();String minDay = dateTime.minusDays(1).toString("yyyy-MM-dd");//minusDays(1)==today-1String startTime = minDay + "00:00:00";String endTime = minDay + "23:59:59";String order = "asc";//排序Integer recordLength = Integer.parseInt("20000");Integer recordIndex = Integer.parseInt("0");Map<String, Object> param = new HashMap<String, Object>();param.put("startTime", startTime);param.put("endTime", endTime);param.put("order", order);param.put("recordLength", recordLength);param.put("recordIndex", recordIndex);param.put("select", select);list = getsqlmapper.sql(param);} catch (Exception e) {e.printStackTrace();logger.error("", e);}return list;}public void export(List<Map<String, Object>> list, Integer select) {try {if (list == null || list.size() == 0) {logger.info("TaskService-----export----导出为空");}if (1 == select) {create(list, select);} else if (2 == select) {create(list, select);}} catch (Exception e) {logger.info("TaskService-----export----导出失败" + e.getMessage());}logger.info("TaskService-----export----导出成功");}/*** 文件产出* @param list* @param select* @return*/public Boolean create(List<Map<String, Object>> list, Integer select) {String fileNameHeader = "";String[] header = null;String[] rowCell = null;String path = "";if (1 == select) {fileNameHeader = "student ";header = new String[]{"name", "age", "class", "birthday"};rowCell = new String[]{"姓名", "年龄", "班级", "生日"};path = "D:\\A";} else if (2 == select) {fileNameHeader = "teacher ";header = new String[]{"name", "scoring"};rowCell = new String[]{"姓名", "评分"};path = "D:\\B";}if (StringUtils.isEmpty(path)) {logger.error("TaskService-----create----路径为空");return false;}try {String s = fileNameHeader + "_" + new DateTime().toString("yyyy-MM-dd") + ".xlsx";DownLoadToExcelUtil downLoadToExcelUtil = new DownLoadToExcelUtil();downLoadToExcelUtil.exportExcel(path, s, rowCell, handleData(list, header));} catch (Exception e) {logger.info("TaskService-----create----  ::  " + e.getMessage());}return true;}public List<List<String>> handleData(List<Map<String, Object>> list, String[] header) {List<List<String>> data = Lists.newArrayList();for (Map<String, Object> map : list) {List ent = Lists.newArrayList();for (String s : header) {if (map.get(s) instanceof Timestamp) {ent.add(dateSDF(map.get(s)));} else {ent.add(map.get(s));}}if (CollectionUtils.isEmpty(ent)) {//用来对集合null和空的判断data.add(ent);}}return data;}/*** 如果是时间,就转换成字符串** @param o* @return*/public String dateSDF(Object o) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");return sdf.format(o);}
}

excel设置

@Slf4j
public class DownLoadToExcelUtil {public void exportExcel(String path, String s, String[] rowCell, List<List<String>> lists) {OutputStream out = null;try {s = new String(s.getBytes("gbk"), "UTF-8");File file = new File(path);if (!file.exists()) {file.mkdirs();}out = new FileOutputStream(path + s);Workbook workbook = new XSSFWorkbook();Sheet sheet1 = workbook.createSheet("Sheet1");sheet1.setDefaultColumnWidth(25);Row row = sheet1.createRow(0);for (int i = 0; i < rowCell.length; i++) {Cell cell = row.createCell((short) i);cell.setCellStyle(getHeaderStyle(workbook));XSSFRichTextString text = new XSSFRichTextString(rowCell[i]);cell.setCellValue(text);}int rowIndex = 1;//行for (List<String> list : lists) {//遍历集合数据,产生数据行if (list != null) {row = sheet1.createRow(rowIndex);int cellIndex = 0;//列for (String e : list) {Cell cell = row.createCell(cellIndex);cell.setCellValue(e);cellIndex++;}}rowIndex++;}workbook.write(out);} catch (Exception e) {e.printStackTrace();} finally {try {if (out != null) {out.flush();out.close();}} catch (IOException e) {e.printStackTrace();}}}private CellStyle getHeaderStyle(Workbook workbook) {//生产一个样式CellStyle style = workbook.createCellStyle();//设置这些样式style.setFillForegroundColor(HSSFColor.PALE_BLUE.index);style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);style.setBorderBottom(HSSFCellStyle.BORDER_THIN);style.setBorderLeft(HSSFCellStyle.BORDER_THIN);style.setBorderRight(HSSFCellStyle.BORDER_THIN);style.setBorderTop(HSSFCellStyle.BORDER_THIN);style.setAlignment(HSSFCellStyle.ALIGN_CENTER);style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中//生成字体Font font = workbook.createFont();font.setColor(HSSFColor.BLACK.index);font.setFontHeightInPoints((short) 12);font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);font.setFontName("宋体");//把字体应用到当前样式style.setFont(font);//指定当单元格内容提示不下时自动换行style.setWrapText(true);return style;}}

java每日定时任务下载相关推荐

  1. u盘可以安装java吗_java下载安装 (三)Java 开发环境配置

    下载后JDK的安装根据提示进行,还有安装JDK的时候也会安装JRE,一并安装就可以了. 安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为C:\Program Files (x86 ...

  2. 【Java每日一题】20161128

    为什么80%的码农都做不了架构师?>>>    package Nov2016; import java.util.ArrayList; import java.util.List; ...

  3. JS设置每日定时任务

    JS设置每日定时任务 文章目录 JS设置每日定时任务 方式一.手写简单实现 方式二.使用npm包node-schedule 方式一.手写简单实现 主要函数: /*** 设置每日定时任务* @param ...

  4. 【Java每日一题】20161123

    为什么80%的码农都做不了架构师?>>>    20161122问题解析请点击今日问题下方的"[Java每日一题]20161123"查看 package Nov2 ...

  5. 【JAVA资料免费下载】158个JAVA免豆精品资料汇总——下载目录(转载)

    [JAVA资料免费下载]158个JAVA免豆精品资料汇总--下载目录(转载) 应广大网友要求,最近小弟整理了一批免积分下载的Java优质资料,因资料众多,一一将资料上传上来需要时间,先将下载目录分享给 ...

  6. 面试有没有看过spring源码_如何看Spring源码、Java每日六道面试分享,打卡第二天...

    原标题:如何看Spring源码.Java每日六道面试分享,打卡第二天 想要深入的熟悉了解Spring源码,我觉得第一步就是要有一个能跑起来的极尽简单的框架,下面我就教大家搭建一个最简单的Spring框 ...

  7. JAVA 通过url下载图片保存到本地(亲测)

    //java 通过url下载图片保存到本地    public static void download(String urlString, int i) throws Exception {     ...

  8. 【Java每日一题】20170113

    20170112问题解析请点击今日问题下方的"[Java每日一题]20170113"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017;p ...

  9. 【Java每日一题】20170309

    20170308问题解析请点击今日问题下方的"[Java每日一题]20170309"查看(问题解析在公众号首发,公众号ID:weknow619) package Mar2017; ...

最新文章

  1. IJCAI 2020灭霸式拒稿,AI审稿是否更公平?
  2. html form提交前验证,form表单提交前验证实现方法
  3. 大脑使用交叉存储,来区分现在和过去
  4. jvm性能调优实战 - 29使用 jstat 摸清线上系统的JVM运行状况
  5. python jdbc_javapython连接mysql快速造数
  6. Linux 编译 libc log,在Android的源码中添加LOG
  7. 你真的理解零拷贝了吗?
  8. android 仿搜索动画,Android仿京东顶部搜索框滑动伸缩动画效果
  9. MySQL架构体系(从一条语句出发了解MySQL各部分的作用)
  10. 从NFC卡(校园卡或者门禁卡)分析看ACR122U读写原理 (转载)
  11. Lakes.AERMOD.View.v8.9.0 1CD大气扩散模型软件包
  12. 数字经济进入2.0时代 浙里有为共赢新“基”遇
  13. win10无线投屏_win10电脑投屏要无线投屏器吗?
  14. 用Python进行自然语言处理 读书笔记 第一章
  15. 《TiDB 6.x in Action》发布,凝聚社区集体智慧的 6.x 实践汇总!
  16. Handler: Activity 之间通过 Handler 通信
  17. 汇编命令及OD常用命令及断点设置
  18. 麒麟960鸿蒙,麒麟710和麒麟960对比
  19. java风控_【A0538】[java视频教程]金融信贷风控的机器学习实战视频教程 it教程
  20. python避坑_使用Python时多少有人走过的坑!避险!

热门文章

  1. php中的数据库操作和字符串操作session与cookie操作,php中的数据库操作和字符串操作session与cookie操作...
  2. pytorch to_device遇到数据迁移不成功的问题
  3. java对pdf文件进行加密操作
  4. 【linux性能优化】定位分析狂打日志的问题
  5. 完美世界(完美世界(北京)网络技术有限公司)
  6. 完美融入云原生的无代码平台 iVX编辑器介绍
  7. python main.py是什么意思_什么是__main__.py?
  8. 从零开始学飞塔第一篇:飞塔防火墙基本上网配置(PPPoE拨号固定IP上网)FortiGate Broadband internet access
  9. VSCode中值得推荐的常用的33个高效前端插件「效率篇」(二)
  10. 使用Arduino和DS12C887芯片制作电子时钟(附Arduino源代码)