|
|
@@ -0,0 +1,569 @@
|
|
|
+package com.chuanghai.attendance.utils;
|
|
|
+
|
|
|
+
|
|
|
+import com.chuanghai.attendance.entity.DownLoadExcel;
|
|
|
+import org.apache.poi.ss.usermodel.*;
|
|
|
+import org.apache.poi.ss.util.CellRangeAddress;
|
|
|
+import org.apache.poi.util.IOUtils;
|
|
|
+import org.apache.poi.xssf.usermodel.*;
|
|
|
+
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.io.IOException;
|
|
|
+import java.net.URLEncoder;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Created with IntelliJ IDEA.
|
|
|
+ *
|
|
|
+ * @Description:
|
|
|
+ */
|
|
|
+public class FileExportUtil {
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param list 需要写入excel的数据 从数据库或者其他途径读取
|
|
|
+ * @Description: 导出监测对比数据的工具类
|
|
|
+ * @return:
|
|
|
+ */
|
|
|
+ public static void testExcelDemo(List<DownLoadExcel> list, HttpServletResponse response, String[] titleStr) {
|
|
|
+ /** 第一步,创建一个Workbook,对应一个Excel文件 */
|
|
|
+ XSSFWorkbook wb = new XSSFWorkbook();
|
|
|
+
|
|
|
+ /** 第二步,在Workbook中添加一个sheet,对应Excel文件中的sheet */
|
|
|
+ XSSFSheet sheet = wb.createSheet("excel导出标题");
|
|
|
+ /** 第三步,设置样式以及字体样式*/
|
|
|
+ XSSFCellStyle titleStyle = createTitleCellStyle(wb);
|
|
|
+ XSSFCellStyle headerStyle = createHeadCellStyle(wb);
|
|
|
+ XSSFCellStyle contentStyle = createContentCellStyle(wb);
|
|
|
+ /** 第四步,创建标题 ,合并标题单元格 */
|
|
|
+ // 行号
|
|
|
+ int rowNum = 0;
|
|
|
+ // 创建第一页的第一行,索引从0开始
|
|
|
+ XSSFRow row0 = sheet.createRow(rowNum++);
|
|
|
+ row0.setHeight((short) 600);// 设置行高
|
|
|
+
|
|
|
+ String[] row_Text = {"姓名", "考勤组", "部门", "工号", "身份证", "黄家湖出勤天数", "黄家湖缺卡天数", "黄家湖缺卡记录"
|
|
|
+ , "黄家湖总出勤天数", "墨轩湖出勤天数", "墨轩湖缺卡天数", "墨轩湖缺卡记录", "墨轩湖总出勤天数", "异常地点打卡天数", "异常地点打卡记录",
|
|
|
+ "0-20分钟迟到次数", "20-30分钟迟到次数", ">30分钟迟到次数", "迟到次数记录", "0-20分钟早退次数", "20-30分钟早退次数", ">30分钟早退次数",
|
|
|
+ "早退次数记录", "出勤天数", "userId", "出勤天数", "休息天数", "工作时长", "迟到次数", "迟到时长", "严重迟到次数", "严重迟到时长",
|
|
|
+ "旷工迟到天数", "早退次数", "早退时长", "上班缺卡次数", "下班缺卡次数", "旷工天数", "外出", "请假", "", "", "", ""};
|
|
|
+
|
|
|
+ String[] row_Text_new = new String[row_Text.length + titleStr.length];
|
|
|
+
|
|
|
+ for (int m = 0; m < row_Text.length; m++) {
|
|
|
+ row_Text_new[m] = row_Text[m];
|
|
|
+ }
|
|
|
+ for (int m = 0; m < titleStr.length; m++) {
|
|
|
+ row_Text_new[row_Text.length + m] = titleStr[m];
|
|
|
+ }
|
|
|
+ row_Text = row_Text_new;
|
|
|
+
|
|
|
+
|
|
|
+ for (int i = 0; i < row_Text.length; i++) {
|
|
|
+ XSSFCell c00 = row0.createCell(i);
|
|
|
+ c00.setCellValue(row_Text[i]);
|
|
|
+ c00.setCellStyle(headerStyle);
|
|
|
+ }
|
|
|
+ // 合并单元格,参数依次为起始列,结束列,起始行,结束行 (索引0开始)
|
|
|
+
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 0));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 1, 1));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 2, 2));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 3, 3));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 4, 4));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 5, 5));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 6, 6));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 7, 7));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 8, 8));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 9, 9));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 10, 10));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 11, 11));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 12, 12));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 13, 13));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 14, 14));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 15, 15));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 16, 16));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 17, 17));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 18, 18));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 19, 19));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 20, 20));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 21, 21));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 22, 22));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 23, 23));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 24, 24));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 25, 25));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 26, 26));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 27, 27));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 28, 28));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 29, 29));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 30, 30));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 31, 31));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 32, 32));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 33, 33));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 34, 34));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 35, 35));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 36, 36));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 37, 37));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 38, 38));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 0, 39, 43));
|
|
|
+
|
|
|
+ //添加每日详情 31 ——————》75
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 44, 44));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 45, 45));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 46, 46));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 47, 47));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 48, 48));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 49, 49));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 50, 50));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 51, 51));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 52, 52));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 53, 53));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 54, 54));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 55, 55));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 56, 56));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 57, 57));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 58, 58));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 59, 59));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 60, 60));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 61, 61));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 62, 62));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 63, 63));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 64, 64));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 65, 65));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 66, 66));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 67, 67));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 68, 68));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 69, 69));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 70, 70));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 71, 71));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 72, 72));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 73, 73));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 74, 74));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ //第二行
|
|
|
+ XSSFRow row2 = sheet.createRow(rowNum++);
|
|
|
+ row2.setHeight((short) 700);
|
|
|
+
|
|
|
+ String[] row_third = {"", "", "", "", "", "", "", ""
|
|
|
+ , "", "", "", "", "", "", "",
|
|
|
+ "", "", "", "", "", "", "",
|
|
|
+ "", "", "", "", "", "", "", "", "", "",
|
|
|
+ "", "", "", "", "","", "(天)", "丧假(天)", "事假(天)", "产假(天)", "病假(天)", "陪护假(天)"};
|
|
|
+
|
|
|
+ String[] row_third_new = new String[row_third.length + titleStr.length];
|
|
|
+
|
|
|
+
|
|
|
+ for (int m = 0; m < row_third.length; m++) {
|
|
|
+ row_third_new[m] = row_third[m];
|
|
|
+ }
|
|
|
+ for (int m = 0; m < titleStr.length; m++) {
|
|
|
+ row_third_new[row_third.length + m] = titleStr[m];
|
|
|
+ }
|
|
|
+ row_third = row_third_new;
|
|
|
+
|
|
|
+ for (int i = 0; i < row_third.length; i++) {
|
|
|
+ XSSFCell tempCell = row2.createCell(i);
|
|
|
+ tempCell.setCellValue(row_third[i]);
|
|
|
+ tempCell.setCellStyle(headerStyle);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ for (DownLoadExcel value : list) {
|
|
|
+
|
|
|
+ XSSFRow tempRow = sheet.createRow(rowNum++);
|
|
|
+ tempRow.setHeight((short) 500);
|
|
|
+ // 循环单元格填入数据
|
|
|
+// for (int j = 0; j < (0 == type ? 12 : 11); j++) {
|
|
|
+ for (int j = 0; j < row_Text.length; j++) {
|
|
|
+ //列宽自适应,j为自适应的列,true就是自适应,false就是不自适应,默认不自适应
|
|
|
+ sheet.autoSizeColumn(j, true);
|
|
|
+ XSSFCell tempCell = tempRow.createCell(j);
|
|
|
+ tempCell.setCellStyle(contentStyle);
|
|
|
+ String tempValue = "";
|
|
|
+ switch (j) {
|
|
|
+ case 0:
|
|
|
+ //姓名
|
|
|
+ tempValue = value.getWorkName();
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ //考勤组
|
|
|
+ tempValue = value.getGroupOfCheck();
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ //部门
|
|
|
+ tempValue = value.getDepartment();
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ //工号
|
|
|
+ tempValue = value.getWorkNum();
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ //身份证
|
|
|
+ tempValue = value.getIdCard();
|
|
|
+ break;
|
|
|
+ case 5:
|
|
|
+ //黄家湖出勤天数
|
|
|
+ tempValue = value.getDaysOfAttendanceInHuangjiahu().toString();
|
|
|
+ break;
|
|
|
+ case 6:
|
|
|
+ //黄家湖缺卡天数
|
|
|
+ tempValue = value.getDaysOfcardShortageInHuangjiahu();
|
|
|
+ break;
|
|
|
+ case 7:
|
|
|
+ //黄家湖缺卡记录
|
|
|
+ tempValue = value.getRecondOfcardShortageInHuangjiahu();
|
|
|
+ break;
|
|
|
+ case 8:
|
|
|
+ //黄家湖总出勤天数
|
|
|
+ tempValue = value.getSumAttendanceInHuangjiahu().toString();
|
|
|
+ break;
|
|
|
+ case 9:
|
|
|
+ // 墨轩湖出勤天数
|
|
|
+ tempValue = value.getDaysOfAttendanceInMoxuanhu().toString();
|
|
|
+ break;
|
|
|
+ case 10:
|
|
|
+ //墨轩湖缺卡天数
|
|
|
+ tempValue = value.getDaysOfcardShortageInMoxuanhu();
|
|
|
+ break;
|
|
|
+ case 11:
|
|
|
+ //墨轩湖缺卡记录
|
|
|
+ tempValue = value.getRecondOfcardShortageInMoxuanhu();
|
|
|
+ break;
|
|
|
+ case 12:
|
|
|
+ //墨轩湖总出勤天数
|
|
|
+ tempValue = value.getSumAttendanceInMoxuanhu().toString();
|
|
|
+ break;
|
|
|
+ case 13:
|
|
|
+ //异常地点打卡天数
|
|
|
+ tempValue = value.getAbnormalClockNumber().toString();
|
|
|
+ break;
|
|
|
+ case 14:
|
|
|
+ //异常地点打卡记录
|
|
|
+ tempValue = value.getAbnormalClockRecond();
|
|
|
+ break;
|
|
|
+ case 15:
|
|
|
+ // 0-20分钟迟到次数
|
|
|
+ tempValue = value.getLeTwentyLateNumber().toString();
|
|
|
+ break;
|
|
|
+ case 16:
|
|
|
+ //20-30分钟迟到次数
|
|
|
+ tempValue = value.getLequalThirtyLateNumber().toString();
|
|
|
+ break;
|
|
|
+ case 17:
|
|
|
+ // >30分钟迟到次数
|
|
|
+ tempValue = value.getGeThirtyLateNumber().toString();
|
|
|
+ break;
|
|
|
+ case 18:
|
|
|
+ //迟到次数记录
|
|
|
+ tempValue = value.getLateOfRecond();
|
|
|
+ break;
|
|
|
+ case 19:
|
|
|
+ // 0-20分钟早退次数
|
|
|
+ tempValue = value.getLeTwentyLeaveNumber().toString();
|
|
|
+ break;
|
|
|
+ case 20:
|
|
|
+ //20-30分钟早退次数
|
|
|
+ tempValue = value.getLequalThirtyLeaveNumber().toString();
|
|
|
+ break;
|
|
|
+ case 21:
|
|
|
+ //>30分钟早退次数
|
|
|
+ tempValue = value.getGeThirtyLeaveNumber().toString();
|
|
|
+ break;
|
|
|
+ case 22:
|
|
|
+ //早退次数记录
|
|
|
+ tempValue = value.getLeaveOfRecond();
|
|
|
+ break;
|
|
|
+ case 23:
|
|
|
+ //出勤天数
|
|
|
+ tempValue = value.getAttendanceDays().toString();
|
|
|
+ break;
|
|
|
+ case 24:
|
|
|
+ //userId
|
|
|
+ tempValue = value.getUserId();
|
|
|
+ break;
|
|
|
+ case 25:
|
|
|
+ //出勤天数
|
|
|
+ tempValue = value.getAttendanceDay();
|
|
|
+ break;
|
|
|
+ case 26:
|
|
|
+ //休息天数
|
|
|
+ tempValue = value.getRestDay();
|
|
|
+ break;
|
|
|
+ case 27:
|
|
|
+ //工作时长
|
|
|
+ tempValue = value.getWorkHours();
|
|
|
+ break;
|
|
|
+ case 28:
|
|
|
+ //迟到次数
|
|
|
+ tempValue = value.getNumberOfLate();
|
|
|
+ break;
|
|
|
+ case 29:
|
|
|
+ //迟到时长
|
|
|
+ tempValue = value.getNumberOfLateTime();
|
|
|
+ break;
|
|
|
+ case 30:
|
|
|
+ //严重迟到次数
|
|
|
+ tempValue = value.getNumberOfSeriousLateness();
|
|
|
+ break;
|
|
|
+ case 31:
|
|
|
+ //严重迟到时长
|
|
|
+ tempValue = value.getDurationOfSevereLateness();
|
|
|
+ break;
|
|
|
+ case 32:
|
|
|
+ //旷工迟到天数
|
|
|
+ tempValue = value.getDaysOfAbsenteeismAndLateness();
|
|
|
+ break;
|
|
|
+ case 33:
|
|
|
+ //早退次数
|
|
|
+ tempValue = value.getLeaveEarlyNumber();
|
|
|
+ break;
|
|
|
+ case 34:
|
|
|
+ //早退时长
|
|
|
+ tempValue = value.getLeaveEarlyTimes();
|
|
|
+ break;
|
|
|
+ case 35:
|
|
|
+ //上班缺卡次数
|
|
|
+ tempValue = value.getLackOfWorkCardTimes();
|
|
|
+ break;
|
|
|
+ case 36:
|
|
|
+ //下班缺卡次数
|
|
|
+ tempValue = value.getLackOfMissingWorkCardTimes();
|
|
|
+ break;
|
|
|
+ case 37:
|
|
|
+ //旷工天数
|
|
|
+ tempValue = value.getAbsenteeismDay();
|
|
|
+ break;
|
|
|
+// case 38:
|
|
|
+// //出差(天)
|
|
|
+// tempValue = value.getEvectionDay();
|
|
|
+// break;
|
|
|
+ case 38:
|
|
|
+ // 外出(天)
|
|
|
+ tempValue = value.getGoOutDay();
|
|
|
+ break;
|
|
|
+ case 39:
|
|
|
+ // 事假(天)
|
|
|
+ tempValue = value.getBereavementLeave();
|
|
|
+ break;
|
|
|
+ case 40:
|
|
|
+ // 产假(天)
|
|
|
+ tempValue = value.getPrivateAffairLeaveDay();
|
|
|
+ break;
|
|
|
+ case 41:
|
|
|
+ //婚假(天)
|
|
|
+ tempValue = value.getMaternityLeaveDay();
|
|
|
+ break;
|
|
|
+ case 42:
|
|
|
+ //病假(天)
|
|
|
+ tempValue = value.getSickLeaveDay();
|
|
|
+ break;
|
|
|
+ case 43:
|
|
|
+ //陪护假(天)
|
|
|
+ tempValue = value.getEscortFalse();
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 44:
|
|
|
+ tempValue = value.getOneOfMonth();
|
|
|
+ break;
|
|
|
+ case 45:
|
|
|
+ tempValue = value.getTwoOfMonth();
|
|
|
+ break;
|
|
|
+ case 46:
|
|
|
+ tempValue = value.getThreeOfMonth();
|
|
|
+ break;
|
|
|
+ case 47:
|
|
|
+ tempValue = value.getFourOfMonth();
|
|
|
+ break;
|
|
|
+ case 48:
|
|
|
+ tempValue = value.getFiveOfMonth();
|
|
|
+ break;
|
|
|
+ case 49:
|
|
|
+ tempValue = value.getSixOfMonth();
|
|
|
+ break;
|
|
|
+ case 50:
|
|
|
+ tempValue = value.getSevenOfMonth();
|
|
|
+ break;
|
|
|
+ case 51:
|
|
|
+ tempValue = value.getEightOfMonth();
|
|
|
+ break;
|
|
|
+ case 52:
|
|
|
+ tempValue = value.getNineOfMonth();
|
|
|
+ break;
|
|
|
+ case 53:
|
|
|
+ tempValue = value.getTenOfMonth();
|
|
|
+ break;
|
|
|
+ case 54:
|
|
|
+ tempValue = value.getElevenOfMonth();
|
|
|
+ break;
|
|
|
+ case 55:
|
|
|
+ tempValue = value.getTwelveOfMonth();
|
|
|
+ break;
|
|
|
+ case 56:
|
|
|
+ tempValue = value.getThirteenOfMonth();
|
|
|
+ break;
|
|
|
+ case 57:
|
|
|
+ tempValue = value.getFourteenOfMonth();
|
|
|
+ break;
|
|
|
+ case 58:
|
|
|
+ tempValue = value.getFifteenOfMonth();
|
|
|
+ break;
|
|
|
+ case 59:
|
|
|
+ tempValue = value.getSixteenOfMonth();
|
|
|
+ break;
|
|
|
+ case 60:
|
|
|
+ tempValue = value.getSeventeenOfMonth();
|
|
|
+ break;
|
|
|
+ case 61:
|
|
|
+ tempValue = value.getEighteenOfMonth();
|
|
|
+ break;
|
|
|
+ case 62:
|
|
|
+ tempValue = value.getNineteenOfMonth();
|
|
|
+ break;
|
|
|
+ case 63:
|
|
|
+ tempValue = value.getTwentyOfMonth();
|
|
|
+ break;
|
|
|
+ case 64:
|
|
|
+ tempValue = value.getTwentyOneOfMonth();
|
|
|
+ break;
|
|
|
+ case 65:
|
|
|
+ tempValue = value.getTwentyTwoOfMonth();
|
|
|
+ break;
|
|
|
+ case 66:
|
|
|
+ tempValue = value.getTwentyThreeOfMonth();
|
|
|
+ break;
|
|
|
+ case 67:
|
|
|
+ tempValue = value.getTwentyFourOfMonth();
|
|
|
+ break;
|
|
|
+ case 68:
|
|
|
+ tempValue = value.getTwentyFiveOfMonth();
|
|
|
+ break;
|
|
|
+ case 69:
|
|
|
+ tempValue = value.getTwentySixOfMonth();
|
|
|
+ break;
|
|
|
+ case 70:
|
|
|
+ tempValue = value.getTwentySevenOfMonth();
|
|
|
+ break;
|
|
|
+ case 71:
|
|
|
+ tempValue = value.getTwentyEightOfMonth();
|
|
|
+ break;
|
|
|
+ case 72:
|
|
|
+ tempValue = value.getTwentyNineOfMonth();
|
|
|
+ break;
|
|
|
+ case 73:
|
|
|
+ tempValue = value.getThirtyOfMonth();
|
|
|
+ break;
|
|
|
+ case 74:
|
|
|
+ tempValue = value.getThirtyOneOfMonth();
|
|
|
+ break;
|
|
|
+
|
|
|
+ }
|
|
|
+ tempCell.setCellValue(tempValue);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //导出到浏览器下载
|
|
|
+ buildExcelDocument("钉钉分析汇总.xlsx", wb, response);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @Description: [导出到浏览器]
|
|
|
+ * @Param: [fileName, wb, response]
|
|
|
+ * @return: void
|
|
|
+ *
|
|
|
+ */
|
|
|
+ private static void buildExcelDocument(String fileName, Workbook wb, HttpServletResponse response) {
|
|
|
+ try {
|
|
|
+ response.setContentType("application/octet-stream");
|
|
|
+ // 可自行定义编码格式
|
|
|
+ response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8"));
|
|
|
+
|
|
|
+ //清除jsp编译html文件的空白,防止excel出现空行
|
|
|
+ response.flushBuffer();
|
|
|
+ //写出
|
|
|
+ wb.write(response.getOutputStream());
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } finally {
|
|
|
+ IOUtils.closeQuietly(wb);
|
|
|
+ }
|
|
|
+ }
|
|
|
+//---------------------------------------以下是封装的样式-----------------------------
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 创建标题样式
|
|
|
+ *
|
|
|
+ * @param wb
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private static XSSFCellStyle createTitleCellStyle(XSSFWorkbook wb) {
|
|
|
+ XSSFCellStyle cellStyle = wb.createCellStyle();
|
|
|
+ cellStyle.setAlignment(HorizontalAlignment.CENTER);//水平居中
|
|
|
+ cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//垂直对齐
|
|
|
+ cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
|
|
|
+// cellStyle.setFillForegroundColor(IndexedColors.GREY_40_PERCENT.getIndex());//背景颜色
|
|
|
+
|
|
|
+ XSSFFont headerFont1 = (XSSFFont) wb.createFont(); // 创建字体样式
|
|
|
+ headerFont1.setBold(true); //字体加粗
|
|
|
+ headerFont1.setFontName("黑体"); // 设置字体类型
|
|
|
+ headerFont1.setFontHeightInPoints((short) 15); // 设置字体大小
|
|
|
+ cellStyle.setFont(headerFont1); // 为标题样式设置字体样式
|
|
|
+ return cellStyle;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 创建表头样式
|
|
|
+ *
|
|
|
+ * @param wb
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private static XSSFCellStyle createHeadCellStyle(XSSFWorkbook wb) {
|
|
|
+ XSSFCellStyle cellStyle = wb.createCellStyle();
|
|
|
+ cellStyle.setWrapText(true);// 设置自动换行
|
|
|
+ cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());//背景颜色
|
|
|
+ cellStyle.setAlignment(HorizontalAlignment.CENTER); //水平居中
|
|
|
+ cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); //垂直对齐
|
|
|
+ cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
|
|
|
+// cellStyle.setBottomBorderColor(IndexedColors.BLACK.index);
|
|
|
+ cellStyle.setBorderBottom(BorderStyle.THIN); //下边框
|
|
|
+ cellStyle.setBorderLeft(BorderStyle.THIN); //左边框
|
|
|
+ cellStyle.setBorderRight(BorderStyle.THIN); //右边框
|
|
|
+ cellStyle.setBorderTop(BorderStyle.THIN); //上边框
|
|
|
+
|
|
|
+ XSSFFont headerFont = (XSSFFont) wb.createFont(); // 创建字体样式
|
|
|
+ headerFont.setBold(true); //字体加粗
|
|
|
+ headerFont.setFontName("黑体"); // 设置字体类型
|
|
|
+ headerFont.setFontHeightInPoints((short) 12); // 设置字体大小
|
|
|
+ cellStyle.setFont(headerFont); // 为标题样式设置字体样式
|
|
|
+
|
|
|
+ return cellStyle;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 创建内容样式
|
|
|
+ *
|
|
|
+ * @param wb
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private static XSSFCellStyle createContentCellStyle(XSSFWorkbook wb) {
|
|
|
+ XSSFCellStyle cellStyle = wb.createCellStyle();
|
|
|
+ cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);// 垂直居中
|
|
|
+ cellStyle.setAlignment(HorizontalAlignment.CENTER);// 水平居中
|
|
|
+ cellStyle.setWrapText(true);// 设置自动换行
|
|
|
+ cellStyle.setBorderBottom(BorderStyle.THIN); //下边框
|
|
|
+ cellStyle.setBorderLeft(BorderStyle.THIN); //左边框
|
|
|
+ cellStyle.setBorderRight(BorderStyle.THIN); //右边框
|
|
|
+ cellStyle.setBorderTop(BorderStyle.THIN); //上边框
|
|
|
+
|
|
|
+ // 生成12号字体
|
|
|
+ XSSFFont font = wb.createFont();
|
|
|
+ font.setColor((short) 8);
|
|
|
+ font.setFontHeightInPoints((short) 12);
|
|
|
+ cellStyle.setFont(font);
|
|
|
+
|
|
|
+ return cellStyle;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|