|
@@ -43,13 +43,6 @@ public class TslReportService {
|
|
|
|
|
|
private XSSFWorkbook workbook = null;
|
|
|
|
|
|
- // 等线 9号字 普通单元格 带边框
|
|
|
- private XSSFCellStyle cellStyle1 = null;
|
|
|
- // 等线 9号字 加粗 标题栏 带边框
|
|
|
- private XSSFCellStyle cellStyle2 = null;
|
|
|
- // 等线 9号字 带边框 小数 保留2位
|
|
|
- private XSSFCellStyle cellStyle3 = null;
|
|
|
-
|
|
|
private static final DateFormat DAY_FORMAT = new SimpleDateFormat("yyyyMMdd");
|
|
|
|
|
|
public TslReportService(TslDataService tslDataService) {
|
|
@@ -66,7 +59,7 @@ public class TslReportService {
|
|
|
workbook.close();
|
|
|
workbook = null;
|
|
|
} catch (Exception e) {
|
|
|
- log.info("写入失败。。。");
|
|
|
+ log.error("写入失败。。。");
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -597,10 +590,42 @@ public class TslReportService {
|
|
|
Row row;
|
|
|
Cell cell;
|
|
|
|
|
|
+ XSSFCellStyle cellStyle1 = getWorkbook().createCellStyle();
|
|
|
+ cellStyle1.setAlignment(HorizontalAlignment.CENTER);
|
|
|
+ XSSFFont font = getWorkbook().createFont();
|
|
|
+ font.setFontName("等线");
|
|
|
+ font.setBold(false);
|
|
|
+ font.setFontHeightInPoints((short) 9);
|
|
|
+ cellStyle1.setFont(font);
|
|
|
+ cellStyle1.setBorderBottom(BorderStyle.THIN);
|
|
|
+ cellStyle1.setBorderTop(BorderStyle.THIN);
|
|
|
+ cellStyle1.setBorderLeft(BorderStyle.THIN);
|
|
|
+ cellStyle1.setBorderRight(BorderStyle.THIN);
|
|
|
+ XSSFCellStyle cellStyle3 = getWorkbook().createCellStyle();
|
|
|
+ cellStyle3.setAlignment(HorizontalAlignment.CENTER);
|
|
|
+ cellStyle3.setFont(font);
|
|
|
+ cellStyle3.setBorderBottom(BorderStyle.THIN);
|
|
|
+ cellStyle3.setBorderTop(BorderStyle.THIN);
|
|
|
+ cellStyle3.setBorderLeft(BorderStyle.THIN);
|
|
|
+ cellStyle3.setBorderRight(BorderStyle.THIN);
|
|
|
+ XSSFDataFormat format = getWorkbook().createDataFormat();
|
|
|
+ cellStyle3.setDataFormat(format.getFormat("0.00"));
|
|
|
+ XSSFCellStyle cellStyle2 = getWorkbook().createCellStyle();
|
|
|
+ cellStyle2.setAlignment(HorizontalAlignment.CENTER);
|
|
|
+ font = getWorkbook().createFont();
|
|
|
+ font.setFontName("等线");
|
|
|
+ font.setBold(true);
|
|
|
+ font.setFontHeightInPoints((short) 9);
|
|
|
+ cellStyle2.setFont(font);
|
|
|
+ cellStyle2.setBorderBottom(BorderStyle.THIN);
|
|
|
+ cellStyle2.setBorderTop(BorderStyle.THIN);
|
|
|
+ cellStyle2.setBorderLeft(BorderStyle.THIN);
|
|
|
+ cellStyle2.setBorderRight(BorderStyle.THIN);
|
|
|
+
|
|
|
// 第一行 标题栏
|
|
|
cell = sheet.createRow(0).createCell(0);
|
|
|
cell.setCellValue("2023年客服投诉清单各地市投诉率情况(管理端-移网质量类)");
|
|
|
- cell.setCellStyle(getCellStyle2());
|
|
|
+ cell.setCellStyle(cellStyle2);
|
|
|
// 合并单元格
|
|
|
CellRangeAddress range = new CellRangeAddress(0, 0, 0, dayOfMonth + 7);
|
|
|
sheet.addMergedRegion(range);
|
|
@@ -614,33 +639,33 @@ public class TslReportService {
|
|
|
row = sheet.createRow(1);
|
|
|
cell = row.createCell(0);
|
|
|
cell.setCellValue("地市");
|
|
|
- cell.setCellStyle(getCellStyle1());
|
|
|
+ cell.setCellStyle(cellStyle1);
|
|
|
for (int i = 1; i <= dayOfMonth; i++) {
|
|
|
cell = row.createCell(i);
|
|
|
cell.setCellValue(i + "日");
|
|
|
- cell.setCellStyle(getCellStyle1());
|
|
|
+ cell.setCellStyle(cellStyle1);
|
|
|
}
|
|
|
cell = row.createCell(dayOfMonth + 1);
|
|
|
cell.setCellValue("投诉总量");
|
|
|
- cell.setCellStyle(getCellStyle1());
|
|
|
+ cell.setCellStyle(cellStyle1);
|
|
|
cell = row.createCell(dayOfMonth + 2);
|
|
|
cell.setCellValue("用户数");
|
|
|
- cell.setCellStyle(getCellStyle1());
|
|
|
+ cell.setCellStyle(cellStyle1);
|
|
|
cell = row.createCell(dayOfMonth + 3);
|
|
|
cell.setCellValue("目前万投率");
|
|
|
- cell.setCellStyle(getCellStyle1());
|
|
|
+ cell.setCellStyle(cellStyle1);
|
|
|
cell = row.createCell(dayOfMonth + 4);
|
|
|
cell.setCellValue("本月预测");
|
|
|
- cell.setCellStyle(getCellStyle1());
|
|
|
+ cell.setCellStyle(cellStyle1);
|
|
|
cell = row.createCell(dayOfMonth + 5);
|
|
|
cell.setCellValue("目标值");
|
|
|
- cell.setCellStyle(getCellStyle1());
|
|
|
+ cell.setCellStyle(cellStyle1);
|
|
|
cell = row.createCell(dayOfMonth + 6);
|
|
|
cell.setCellValue("与目标差距");
|
|
|
- cell.setCellStyle(getCellStyle1());
|
|
|
+ cell.setCellStyle(cellStyle1);
|
|
|
cell = row.createCell(dayOfMonth + 7);
|
|
|
cell.setCellValue("地市");
|
|
|
- cell.setCellStyle(getCellStyle1());
|
|
|
+ cell.setCellStyle(cellStyle1);
|
|
|
|
|
|
// 获取数据
|
|
|
Map<String, List<Object>> seet1Data = tslDataService.getSeet1Data(day);
|
|
@@ -653,16 +678,16 @@ public class TslReportService {
|
|
|
// 写入A列的地市
|
|
|
cell = row.createCell(cellNum++);
|
|
|
cell.setCellValue(area);
|
|
|
- cell.setCellStyle(getCellStyle1());
|
|
|
+ cell.setCellStyle(cellStyle1);
|
|
|
for (Object obj : seet1Data.get(area)) {
|
|
|
cell = row.createCell(cellNum++);
|
|
|
cell.setCellValue(Double.parseDouble(obj.toString()));
|
|
|
- cell.setCellStyle(getCellStyle1());
|
|
|
+ cell.setCellStyle(cellStyle1);
|
|
|
}
|
|
|
- // 写入AC列的地市
|
|
|
+ // 写入最后一列的地市
|
|
|
cell = row.createCell(cellNum++);
|
|
|
cell.setCellValue(area);
|
|
|
- cell.setCellStyle(getCellStyle1());
|
|
|
+ cell.setCellStyle(cellStyle1);
|
|
|
// cellNum复位
|
|
|
cellNum = 0;
|
|
|
}
|
|
@@ -671,37 +696,37 @@ public class TslReportService {
|
|
|
// 写入A列的地市
|
|
|
cell = row.createCell(cellNum++);
|
|
|
cell.setCellValue("全省");
|
|
|
- cell.setCellStyle(getCellStyle1());
|
|
|
+ cell.setCellStyle(cellStyle1);
|
|
|
for (Object obj : seet1Data.get("全省")) {
|
|
|
cell = row.createCell(cellNum++);
|
|
|
cell.setCellValue(Double.parseDouble(obj.toString()));
|
|
|
- cell.setCellStyle(getCellStyle1());
|
|
|
+ cell.setCellStyle(cellStyle1);
|
|
|
}
|
|
|
- // 写入AC列的地市
|
|
|
+ // 写入最后一列的地市
|
|
|
cell = row.createCell(cellNum++);
|
|
|
cell.setCellValue("全省");
|
|
|
- cell.setCellStyle(getCellStyle1());
|
|
|
+ cell.setCellStyle(cellStyle1);
|
|
|
|
|
|
- // 3-15行(2-14)X列到AB列 (23-27)是浮点数,设置为显示小数点后2位
|
|
|
+ // 3-15行(2-14)dayOfMonth+2 - dayofMonth+6是浮点数,设置为显示小数点后2位
|
|
|
for (int i = 2; i <= 14; i++) {
|
|
|
row = sheet.getRow(i);
|
|
|
- for (int j = 23; j <= 27; j++) {
|
|
|
+ for (int j = dayOfMonth + 2; j <= dayOfMonth + 6; j++) {
|
|
|
cell = row.getCell(j);
|
|
|
- cell.setCellStyle(getCellStyle3());
|
|
|
+ cell.setCellStyle(cellStyle3);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 添加条件格式B15-V15
|
|
|
CellRangeAddress rangeAddress = new CellRangeAddress(rowNum, rowNum, 1, dayOfMonth);
|
|
|
setConditionalFormatting(sheet, rangeAddress);
|
|
|
- // 添加条件格式Y3-Y14
|
|
|
- rangeAddress = new CellRangeAddress(2, 13, 24, 24);
|
|
|
+ // 添加条件格式(dayOfMonth+3)(3-14)
|
|
|
+ rangeAddress = new CellRangeAddress(2, 13, dayOfMonth + 3, dayOfMonth + 3);
|
|
|
setConditionalFormatting(sheet, rangeAddress);
|
|
|
// 添加条件格式Z3-Z14
|
|
|
- rangeAddress = new CellRangeAddress(2, 13, 25, 25);
|
|
|
+ rangeAddress = new CellRangeAddress(2, 13, dayOfMonth + 4, dayOfMonth + 4);
|
|
|
setConditionalFormatting(sheet, rangeAddress);
|
|
|
// 添加条件格式AB3-AB14
|
|
|
- rangeAddress = new CellRangeAddress(2, 13, 27, 27);
|
|
|
+ rangeAddress = new CellRangeAddress(2, 13, dayOfMonth + 6, dayOfMonth + 6);
|
|
|
setConditionalFormatting(sheet, rangeAddress);
|
|
|
|
|
|
// 设置sheet的列宽 1409, 876, 876, ..., 876, 1792, 1665, 2177, 2844, 1409, 2177, 1409
|
|
@@ -730,59 +755,6 @@ public class TslReportService {
|
|
|
return this.workbook;
|
|
|
}
|
|
|
|
|
|
- private XSSFCellStyle getCellStyle1() {
|
|
|
- if (cellStyle1 == null) {
|
|
|
- cellStyle1 = getWorkbook().createCellStyle();
|
|
|
- cellStyle1.setAlignment(HorizontalAlignment.CENTER);
|
|
|
- XSSFFont font = getWorkbook().createFont();
|
|
|
- font.setFontName("等线");
|
|
|
- font.setBold(false);
|
|
|
- font.setFontHeightInPoints((short) 9);
|
|
|
- cellStyle1.setFont(font);
|
|
|
- cellStyle1.setBorderBottom(BorderStyle.THIN);
|
|
|
- cellStyle1.setBorderTop(BorderStyle.THIN);
|
|
|
- cellStyle1.setBorderLeft(BorderStyle.THIN);
|
|
|
- cellStyle1.setBorderRight(BorderStyle.THIN);
|
|
|
- }
|
|
|
- return this.cellStyle1;
|
|
|
- }
|
|
|
-
|
|
|
- private XSSFCellStyle getCellStyle2() {
|
|
|
- if (cellStyle2 == null) {
|
|
|
- cellStyle2 = getWorkbook().createCellStyle();
|
|
|
- cellStyle2.setAlignment(HorizontalAlignment.CENTER);
|
|
|
- XSSFFont font = getWorkbook().createFont();
|
|
|
- font.setFontName("等线");
|
|
|
- font.setBold(true);
|
|
|
- font.setFontHeightInPoints((short) 9);
|
|
|
- cellStyle2.setFont(font);
|
|
|
- cellStyle2.setBorderBottom(BorderStyle.THIN);
|
|
|
- cellStyle2.setBorderTop(BorderStyle.THIN);
|
|
|
- cellStyle2.setBorderLeft(BorderStyle.THIN);
|
|
|
- cellStyle2.setBorderRight(BorderStyle.THIN);
|
|
|
- }
|
|
|
- return this.cellStyle2;
|
|
|
- }
|
|
|
-
|
|
|
- private XSSFCellStyle getCellStyle3() {
|
|
|
- if (cellStyle3 == null) {
|
|
|
- cellStyle3 = getWorkbook().createCellStyle();
|
|
|
- cellStyle3.setAlignment(HorizontalAlignment.CENTER);
|
|
|
- XSSFFont font = getWorkbook().createFont();
|
|
|
- font.setFontName("等线");
|
|
|
- font.setBold(false);
|
|
|
- font.setFontHeightInPoints((short) 9);
|
|
|
- cellStyle3.setFont(font);
|
|
|
- cellStyle3.setBorderBottom(BorderStyle.THIN);
|
|
|
- cellStyle3.setBorderTop(BorderStyle.THIN);
|
|
|
- cellStyle3.setBorderLeft(BorderStyle.THIN);
|
|
|
- cellStyle3.setBorderRight(BorderStyle.THIN);
|
|
|
- XSSFDataFormat format = getWorkbook().createDataFormat();
|
|
|
- cellStyle3.setDataFormat(format.getFormat("0.00"));
|
|
|
- }
|
|
|
- return this.cellStyle3;
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 添加合并单元格并添加边框
|
|
|
*
|