From d19e91bcc4ed9ab08e8be375fb5fc0f7e874a6a9 Mon Sep 17 00:00:00 2001 From: whycxzp <glperry@163.com> Date: 星期三, 30 四月 2025 18:17:44 +0800 Subject: [PATCH] 测试调整格式 --- src/main/java/com/whyc/service/ExcelService.java | 64 ++++++++++++++++++++++++-------- 1 files changed, 48 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/whyc/service/ExcelService.java b/src/main/java/com/whyc/service/ExcelService.java index dac33f0..2495b18 100644 --- a/src/main/java/com/whyc/service/ExcelService.java +++ b/src/main/java/com/whyc/service/ExcelService.java @@ -18,10 +18,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletResponse; import java.io.FileOutputStream; import java.io.IOException; import java.math.BigDecimal; import java.math.RoundingMode; +import java.nio.charset.StandardCharsets; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; @@ -52,22 +54,44 @@ * * @throws IOException */ - public void dcReport(int battGroupId,int testRecordCount) throws IOException { - String filePath = "C:\\Users\\29550\\Desktop\\褰撳墠椤圭洰\\2023\\0涔屼笢寰风郴缁焅\娴嬭瘯.xlsx"; + public void dcReport(int battGroupId, int testRecordCount, HttpServletResponse response) throws IOException { + //String filePath = "C:\\Users\\29550\\Desktop\\褰撳墠椤圭洰\\2023\\0涔屼笢寰风郴缁焅\娴嬭瘯.xlsx"; //鍒涘缓涓�涓伐浣滅翱 XSSFWorkbook workbook = new XSSFWorkbook(); //鍒涘缓sheet1 - createSheet1(workbook,battGroupId,testRecordCount); + PowerInf battInfo = createSheet1(workbook, battGroupId, testRecordCount); //鍒涘缓sheet2 -- 姣忔湀鐢靛帇,12涓湀,鍙栨瘡鏈�1鍙烽浂鐐归浂鍒� //鍒涘缓sheet3 -- 姣忔湀鍐呴樆, 12涓湀,鍙栨瘡鏈�1鍙烽浂鐐归浂鍒� - //createSheet2And3(workbook,battGroupId); + createSheet2And3(workbook,battGroupId); //鍒涘缓sheet4 -- 姣忓ぉ娓╁害, 30澶�, 鍙栨瘡澶╅浂鐐归浂鍒� - //createSheet4(workbook,battGroupId); + createSheet4(workbook,battGroupId); - // 灏嗗伐浣滅翱鍐欏叆鏂囦欢 + /*// 灏嗗伐浣滅翱鍐欏叆鏂囦欢 FileOutputStream fileOut = new FileOutputStream(filePath); - workbook.write(fileOut); + workbook.write(fileOut);*/ + String filename ="鐩存祦鎶ヨ〃_"+battInfo.getPowerName()+"_"+battInfo.getBattGroupName()+".xlsx"; + // 鏍规嵁娴忚鍣ㄥ鎴风鍋氫笉鍚岀紪鐮侊紝鍏煎鎬ф洿濂� + String encodedFilename = java.net.URLEncoder.encode(filename, String.valueOf(StandardCharsets.UTF_8)); + boolean isMSBrowser = false; + String ua = response.getHeader("User-Agent"); + if (ua != null) { + ua = ua.toLowerCase(); + if (ua.contains("msie") || ua.contains("edge") || ua.contains("trident")) { + isMSBrowser = true; + } + } + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + if (isMSBrowser) { + // IE/Edge 浣跨敤 UTF-8 缂栫爜骞剁敤 URLEncoder + response.setHeader("Content-Disposition", "attachment;filename=" + encodedFilename + ";filename*=utf-8''" + encodedFilename); + } else { + // Chrome/Firefox 绛変娇鐢� RFC 5987 缂栫爜鏂瑰紡 + response.setHeader("Content-Disposition", "attachment;filename*=UTF-8''" + encodedFilename); + } + + + workbook.write(response.getOutputStream()); // 鍏抽棴宸ヤ綔绨� workbook.close(); @@ -214,6 +238,10 @@ XSSFCellStyle cellStyleOriginal2 = cellOfSheet3.getCellStyle(); XSSFCellStyle cellStyleNew2 = getCellStyleFont(cellStyleOriginal2,workbook, true, 15); cellOfSheet3.setCellStyle(cellStyleNew2); + + //璁剧疆鏁板�肩被鍨嬩繚鐣欎綅鏁� + setDateFormat(workbook,sheet2,3,110,1,columnCount-2, "0.0000"); + setDateFormat(workbook,sheet3,3,110,1,columnCount-2, "0.0000"); // 鍒涘缓缁樺浘宸ュ叿 @@ -465,6 +493,8 @@ cell.setCellStyle(cellStyle); } + //璁剧疆鏁板�肩被鍨嬪崟鍏冩牸淇濈暀浣嶆暟 + setDateFormat(workbook,sheet4,3,110,1,columnCount-2, "0.0000"); createChart(sheet4, columnCount,3,"娓╁害鎶樼嚎鍥�"); } @@ -495,7 +525,7 @@ } //private static void createSheet1(XSSFWorkbook workbook, int battGroupId, int testRecordCount) { - private void createSheet1(XSSFWorkbook workbook, int battGroupId, int testRecordCount) { + private PowerInf createSheet1(XSSFWorkbook workbook, int battGroupId, int testRecordCount) { XSSFSheet sheet = workbook.createSheet("鏀剧數鍏呯數鐢靛帇鏁版嵁鎶ヨ〃"); //鎬荤殑鍒楁暟鏍规嵁 鏀剧數鏃堕暱鍜屽厖鐢垫椂闀垮喅瀹� //鏁版嵁鍑嗗 @@ -612,14 +642,14 @@ "宸ヤ綔鎴愬憳锛氬懆绱犳枃銆佹潕蹇楁爣銆佺帇鏈堢伩绛�"); XSSFCell cell3Row2 = row1.createCell(3); - cell3Row2.setCellValue("鏀剧數鏃ユ湡锛�2021.10.30\n" + - "鏀剧數寮�濮嬫椂闂达細10:00\n" + - "鏀剧數缁撴潫鏃堕棿锛�19:47"); + cell3Row2.setCellValue("鏀剧數鏃ユ湡锛�"+ DateUtil.YYYY_DOT_MM_DOT_DD.format(dischargeStartTime) +"\n" + + "鏀剧數寮�濮嬫椂闂达細"+ DateUtil.YYYY_MM_DD_HH_MM.format(dischargeStartTime) +"\n" + + "鏀剧數缁撴潫鏃堕棿锛�"+ DateUtil.YYYY_MM_DD_HH_MM.format(dischargeEndTime.getTime())); XSSFCell cell4Row2 = row1.createCell(5); - cell4Row2.setCellValue("鏀剧數鐢垫祦锛圓锛夛細35\n" + - "鏀剧數鏃堕暱锛堟椂.鍒嗭級锛�600min\n" + - "鏀剧數瀹归噺锛圓h锛夛細300"); + cell4Row2.setCellValue("鏀剧數鐢垫祦锛圓锛夛細"+ Math.abs(battTestInf.getTestCurr())+"\n" + + "鏀剧數鏃堕暱锛堟椂.鍒嗭級锛�"+testTimeMinutes+"\n" + + "鏀剧數瀹归噺锛圓h锛夛細"+Math.abs(battTestInf.getTestCap())); XSSFCell cell5Row2 = row1.createCell(columnCount-1); cell5Row2.setCellValue("鐜娓╁害锛堚剝锛夛細24.5\n" + @@ -725,7 +755,7 @@ List<BattRealTimeDataHistory> fcVolListOriginal = battRTDataHisService.getFcVolList(battGroupId,dischargeStartTime); //鎸夊崟浣撶紪鍙锋帓搴�,鎸夌紪鍙峰崌搴� fcVolListOriginal.sort(Comparator.comparingInt(BattRealTimeDataHistory::getMonNum)); - addStatistics(fcVolListOriginal,"vol"); + addStatistics(fcVolListOriginal,"vol","tmp"); //鎬荤數娴佹�荤數鍘嬪垪鍏� Float fcGroupVol = fcVolListOriginal.get(0).getGroupVol(); Float fcGroupCurr = fcVolListOriginal.get(0).getGroupCurr(); @@ -846,7 +876,7 @@ rowTemp.createCell(3).setCellValue(preVolList.get(j).getGroupCurr()); }else { rowTemp.createCell(1).setCellValue(fcVolList.get(j).getMonVol()); - rowTemp.createCell(2).setCellValue(fcVolList.get(j).getMonVol()); + rowTemp.createCell(2).setCellValue(fcVolList.get(j).getMonTmp()); rowTemp.createCell(3).setCellValue(preVolList.get(j).getMonVol()); rowTemp.createCell(4).setCellValue(preVolList.get(j).getMonTmp()); } @@ -1085,6 +1115,8 @@ setDateFormat(workbook,sheet,4,113,1,columnCount-1,"0.0000"); //鐢熸垚鍥捐〃 createChart(sheet, columnCount, 6,""); + + return battInfo; } private void setDateFormat(Workbook workbook,XSSFSheet sheet, int rowIndexStart, int rowIndexEnd,int columnIndexStart,int columnIndexEnd, String formatStr) { -- Gitblit v1.9.1