赞
踩
仅供参考部分方法,无法直接使用。
// 报表临时文件目录 public static final String WORK_FILES = excelTask.class.getResource("/").getPath() + "workfiles/";
/** * 邮件定时发送excel报表 */ public void sendInfoExcel() { try { String nowTime = DateUtil.getStringDate(); String beginTime = "xxxx"; String finishTime = "xxxx"; reportQO.setBeginDate(beginTime); reportQO.setEndDate(finishTime); //查询报表信息 List<WorkInfo> WorkInfos = reportDao.countLogData(reportQO); if(StringTool.isNotEmpty(WorkInfos) && WorkInfos.size() > 0){ // 创建新报表文件 String fileName = "excel报表.xls"; String fileFullPath = WORK_FILES + fileName; //删除之前的报表文件 this.deleteFile(fileFullPath); // 生成excel文件 OutputStream out = null; try { File file = new File(fileFullPath); if (!file .getParentFile().exists()) { file .getParentFile().mkdirs(); } if(!file .exists()) { file .createNewFile(); } out = new FileOutputStream(file); //报表信息 String[] fields = {"项目名称", "产品名称", "投入数", "产出数"}; SXSSFWorkbook wb = exportInfoExcel(WorkInfos, null, 0, fields, nowTime); //第1页查询结束(第一次查询) wb.write(out); out.flush(); out.close(); logger.info("生成报表 成功"); } catch (Exception e) { logger.debug("生成报表异常" + e.getMessage()); e.printStackTrace(); try { out.close(); } catch (IOException e1) { e1.printStackTrace(); } } WarnMesssgeData warnMes = new WarnMesssgeData(); //邮件标题 warnMes.setSubject("每日报表"); //邮件内容 warnMes.setContent("报表见附件(更新时间:"+ nowTime +")"); //文件名称 warnMes.setFileName(fileName); //文件地址 warnMes.setFileAddress(fileFullPath); //发送邮件 this.sendExcelEmail(warnMes); } } catch (Exception e) { logger.error("邮件定时发送excel报表发生异常", e); } }
/** * 发送邮件设置 * @param warnMes * @throws GeneralSecurityException * @throws Exception */ public static void sendExcelEmail(WarnMesssgeData warnMes) throws GeneralSecurityException, Exception { Properties prop = new Properties(); // 开启debug调试,以便在控制台查看 prop.setProperty("mail.debug", "true"); // 设置邮件服务器主机名 prop.setProperty("mail.host", "smtp.exmail.qq.com"); // 发送服务器需要身份验证 prop.setProperty("mail.smtp.auth", "true"); // 发送邮件协议名称 prop.setProperty("mail.transport.protocol", "smtp"); //端口 prop.setProperty("mail.smtp.port", "465"); // 开启SSL加密,否则会失败 MailSSLSocketFactory sf = new MailSSLSocketFactory(); sf.setTrustAllHosts(true); prop.put("mail.smtp.ssl.enable", "true"); prop.put("mail.smtp.ssl.socketFactory", sf); // 创建session Session session = Session.getInstance(prop); // 通过session得到transport对象 Transport ts = session.getTransport(); // 连接邮件服务器:邮箱类型,帐号,授权码代替密码(更安全) ts.connect("smtp.exmail.qq.com","test1@qq.com", "111111"); // 创建邮件 InternetAddress[] receiverArr={new InternetAddress("test1@qq.com"),new InternetAddress("test2@qq.com")}; javax.mail.Message message = createExcelMail(session,receiverArr,warnMes); // 发送邮件 ts.sendMessage(message, message.getAllRecipients()); ts.close(); } /** * 发送邮件 * @param session * @param receiverArr * @param warnMes * @return * @throws Exception */ public static MimeMessage createExcelMail(Session session, InternetAddress[] receiverArr, WarnMesssgeData warnMes) throws Exception { // 创建邮件对象 MimeMessage message = new MimeMessage(session); // 指明邮件的发件人 message.setFrom(new InternetAddress("test1@qq.com")); // 指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发 message.setRecipients(javax.mail.Message.RecipientType.TO, receiverArr); // 邮件的标题 message.setSubject(warnMes.getSubject()); // 设置邮件消息内容、包含附件 Multipart msgPart = new MimeMultipart(); message.setContent(msgPart); MimeBodyPart body = new MimeBodyPart(); // 正文 MimeBodyPart attach = new MimeBodyPart(); // 附件 msgPart.addBodyPart(body); msgPart.addBodyPart(attach); // 设置正文内容 body.setContent(warnMes.getContent(), "text/html;charset=utf-8"); // 设置附件内容 attach.setDataHandler(new DataHandler(new FileDataSource(warnMes.getFileAddress()))); attach.setFileName((MimeUtility.encodeText(warnMes.getFileName()))); message.saveChanges(); // 邮件的创建时间 message.setSentDate(new Date()); // 返回创建好的邮件对象 return message; }
/** * 删除单个文件 * * @param fileName 要删除的文件的文件名 * @return 单个文件删除成功返回true,否则返回false */ public static boolean deleteFile(String fileName) { File file = new File(fileName); // 如果文件路径所对应的文件存在,并且是一个文件,则直接删除 if (file.exists() && file.isFile()) { if (file.delete()) { System.out.println("删除单个文件" + fileName + "成功!"); return true; } else { System.out.println("删除单个文件" + fileName + "失败!"); return false; } } else { System.out.println("删除单个文件失败:" + fileName + "不存在!"); return false; } }
private SXSSFWorkbook exportInfoExcel(List<WorkInfo> WorkInfos, SXSSFWorkbook workbook, int index, String[] fields, String nowTime) { Sheet sheet; if (index == 0) { if (StringTool.isEmpty(workbook)) { workbook = new SXSSFWorkbook(); } sheet = workbook.createSheet("excel报表"); // 生成一个样式 CellStyle style = workbook.createCellStyle(); // 设置背景色 // style.setFillForegroundColor(HSSFColor.LIGHT_TURQUOISE.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); // 设置字体 Font font = workbook.createFont(); font.setFontName("仿宋_GB2312"); font.setColor(HSSFColor.OLIVE_GREEN.index); font.setFontHeightInPoints((short) 18); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 把字体应用到当前的样式 style.setFont(font); Row row1 = sheet.createRow(0); row1.setHeightInPoints(25); Cell cell = row1.createCell(0); String titleInfo = "报表信息(更新时间:"+ nowTime +")"; cell.setCellValue(titleInfo); cell.setCellStyle(style); int colLength = fields.length; for (int i = 1; i < colLength; i++) { cell = row1.createCell(i); cell.setCellStyle(style); } sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, colLength - 1)); // 生成一个样式 CellStyle style1 = workbook.createCellStyle(); // 设置背景色 style1.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index); style1.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); //设置边框 style1.setBorderBottom(HSSFCellStyle.BORDER_THIN); style1.setBorderLeft(HSSFCellStyle.BORDER_THIN); style1.setBorderRight(HSSFCellStyle.BORDER_THIN); style1.setBorderTop(HSSFCellStyle.BORDER_THIN); style1.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 设置字体 Font font1 = workbook.createFont(); font1.setFontName("仿宋_GB2312"); font1.setColor(HSSFColor.OLIVE_GREEN.index); font1.setFontHeightInPoints((short) 14); font1.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 把字体应用到当前的样式 style1.setFont(font1); sheet.setColumnWidth(0, 5000); sheet.setColumnWidth(1, 5000); sheet.setColumnWidth(2, 5000); sheet.setColumnWidth(3, 5000); //生成一行 Row row2 = sheet.createRow(1); Cell cell1; for (int k = 0; k < fields.length; k++) { cell1 = row2.createCell(k); cell1.setCellValue(fields[k]); cell1.setCellStyle(style1); } } sheet = workbook.getSheetAt(0); // 生成一个样式 CellStyle style3 = workbook.createCellStyle(); //设置边框 style3.setBorderBottom(HSSFCellStyle.BORDER_THIN); style3.setBorderLeft(HSSFCellStyle.BORDER_THIN); style3.setBorderRight(HSSFCellStyle.BORDER_THIN); style3.setBorderTop(HSSFCellStyle.BORDER_THIN); style3.setAlignment(HSSFCellStyle.ALIGN_CENTER); style3.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中 Font font3 = workbook.createFont(); font3.setFontName("仿宋_GB2312"); font3.setColor(HSSFColor.BLACK.index); font3.setFontHeightInPoints((short) 10); font3.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 把字体应用到当前的样式 style3.setFont(font3); style3.setWrapText(true); if (WorkInfos == null || WorkInfos.size() == 0) { return workbook; } Row row3; Cell cell1; int contentIndex = 2; int count = 0; for (int i = 0; i < WorkInfos.size()-1; i++) { WorkInfo bean = WorkInfos.get(i); row3 = sheet.createRow( contentIndex + i + count); cell1 = row3.createCell(0); cell1.setCellValue(bean.getSysName()); cell1.setCellStyle(style3); cell1 = row3.createCell(1); cell1.setCellValue(bean.getProdName()); cell1.setCellStyle(style3); cell1 = row3.createCell(2); cell1.setCellValue(bean.getTotalNum()); cell1.setCellStyle(style3); cell1 = row3.createCell(3); cell1.setCellValue(bean.getFinalNum()); cell1.setCellStyle(style3); } return workbook; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。