From 1ba02f33543361b14e7440ee851dffeed440e5ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Thu, 26 Dec 2024 14:19:32 +0800 Subject: [PATCH] 'commit' --- Doc/MaxKB/excel模版.xlsx | Bin 10639 -> 11191 bytes ...校人员和班级统计【结果】.xlsx} | Bin 36858 -> 36155 bytes src/main/java/UnitTest/TestMaxKB.java | 140 +++++------------- 3 files changed, 35 insertions(+), 105 deletions(-) rename Doc/MaxKB/{结果.xlsx => 各学校人员和班级统计【结果】.xlsx} (78%) diff --git a/Doc/MaxKB/excel模版.xlsx b/Doc/MaxKB/excel模版.xlsx index 6517b154ffeea0a2136d98192026cf0c8655bcd4..143197b12e00966c60213e4b65b2b8507870a961 100644 GIT binary patch literal 11191 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 literal 10639 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 HkAnXInE8Mz diff --git a/src/main/java/UnitTest/TestMaxKB.java b/src/main/java/UnitTest/TestMaxKB.java index 58e05a7a..b231b086 100644 --- a/src/main/java/UnitTest/TestMaxKB.java +++ b/src/main/java/UnitTest/TestMaxKB.java @@ -1,6 +1,6 @@ package UnitTest; -import com.jfinal.kit.Kv; +import com.dsideal.QingLong.Util.ExcelCommonUtil; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -11,120 +11,48 @@ import java.util.*; public class TestMaxKB { - - /** - * 功能:获取指定单元格的值(字符串) - * 作者:黄海 - * 时间:2019-01-01 - * - * @param cell - * @return - */ - public static String getStringValue(Cell cell) { - String value = ""; - if (cell == null || cell.equals(null) || cell.getCellType() == CellType.BLANK) { - value = ""; - } else { - //判断数据类型 - switch (cell.getCellType()) { - case FORMULA: - try { - /* - * 此处判断使用公式生成的字符串有问题,因为HSSFDateUtil.isCellDateFormatted(cell)判断过程中cell - * .getNumericCellValue();方法会抛出java.lang.NumberFormatException异常 - */ - if (DateUtil.isCellDateFormatted(cell)) { - Date businessDateTime = cell.getDateCellValue(); - Calendar cal = Calendar.getInstance(); - cal.setTime(businessDateTime); - int year = cal.get(Calendar.YEAR); - int month = cal.get(Calendar.MONTH) + 1; - int date = cal.get(Calendar.DATE); - value = year + "-" + month + "-" + date; - break; - } else { - value = String.valueOf(cell.getNumericCellValue()); - } - } catch (IllegalStateException e) { - value = String.valueOf(cell.getRichStringCellValue()); - } - break; - case NUMERIC: - value = "" + cell.getNumericCellValue(); - break; - case STRING: - value = cell.getStringCellValue(); - break; - default: - break; - } - } - //先设置为字符串格式 - //cell.setCellType(CellType.STRING); - //然后读取之 - //value=cell.getStringCellValue().trim(); - if (value.endsWith(".0")) { - value = value.substring(0, value.length() - 2); - } - return value; - } - public static void main(String[] args) throws IOException { //数据源 - String excelPath = "D:\\dsWork\\QingLong\\Doc\\MaxKB\\各学校人员和班级统计.xlsx"; - //写入模板 - String templatePath = "D:\\dsWork\\QingLong\\Doc\\MaxKB\\excel模版.xlsx"; - - //输出结果 - String outputPath = "D:\\dsWork\\QingLong\\Doc\\MaxKB\\结果.xlsx"; + String source = "D:\\dsWork\\QingLong\\Doc\\MaxKB\\各学校人员和班级统计.xlsx"; + //模板 + String template = "D:\\dsWork\\QingLong\\Doc\\MaxKB\\excel模版.xlsx"; + //结果 + String target = source.replace(".xlsx", "【结果】.xlsx"); //模板读取 - FileInputStream fTemplate = new FileInputStream(templatePath); - Workbook workbookTemplate = new XSSFWorkbook(fTemplate); - // 获取第一个工作表 - Sheet sheetTemplate = workbookTemplate.getSheetAt(0); - // 创建单元格样式(可选) - CellStyle style = workbookTemplate.createCellStyle(); - // 设置字体 - Font font = workbookTemplate.createFont(); - font.setFontName("宋体"); - font.setFontHeightInPoints((short) 11); - style.setFont(font); - // 设置对齐方式 - style.setAlignment(HorizontalAlignment.CENTER); - style.setVerticalAlignment(VerticalAlignment.CENTER); - - - //使用POI读取EXCEL文件的内容 - FileInputStream fSource = new FileInputStream(excelPath); - Workbook workbook = new XSSFWorkbook(fSource); - // 获取第一个工作表 - Sheet sheetSource = workbook.getSheetAt(0); + FileInputStream finTemplate = new FileInputStream(template); + Workbook wbTemplate = new XSSFWorkbook(finTemplate); + Sheet sheetTemplate = wbTemplate.getSheetAt(0);// 获取第一个工作表 + CellStyle cellStyle = ExcelCommonUtil.getCellStyle(wbTemplate);//单元格样式 + //源文件 + FileInputStream fSource = new FileInputStream(source); + Workbook wbSource = new XSSFWorkbook(fSource); + Sheet sheetSource = wbSource.getSheetAt(0);// 获取第一个工作表 //1、一共有哪些区 Set areaSet = new HashSet<>(); for (Row row : sheetSource) { - String jyjName = getStringValue(row.getCell(1));//教育局 - areaSet.add(jyjName); + String jyj = ExcelCommonUtil.getStringValue(row.getCell(1));//教育局 + areaSet.add(jyj); } //2、记录每个区下有多少个学校,多少个班级,多少个教师,多少个专任教师 - Map> schoolMap = new HashMap<>(); + Map> areaMap = new HashMap<>(); for (Row row : sheetSource) { - String schoolName = getStringValue(row.getCell(0));//学位名称 - String jyjName = getStringValue(row.getCell(1));//教育局 - String classCount = getStringValue(row.getCell(2));//班级数量 - String studentCount = getStringValue(row.getCell(3));//学生数量 - String teacherCount = getStringValue(row.getCell(4));//教师数量 - String zhuanRenCount = getStringValue(row.getCell(5));//专任教师数量 + String schoolName = ExcelCommonUtil.getStringValue(row.getCell(0));//学位名称 + String jyjName = ExcelCommonUtil.getStringValue(row.getCell(1));//教育局 + String classCount = ExcelCommonUtil.getStringValue(row.getCell(2));//班级数量 + String studentCount = ExcelCommonUtil.getStringValue(row.getCell(3));//学生数量 + String teacherCount = ExcelCommonUtil.getStringValue(row.getCell(4));//教师数量 + String zhuanRenCount = ExcelCommonUtil.getStringValue(row.getCell(5));//专任教师数量 List list = new ArrayList<>(); - if (schoolMap.containsKey(jyjName)) { - list = schoolMap.get(jyjName); + if (areaMap.containsKey(jyjName)) { + list = areaMap.get(jyjName); } list.add("学校名称:" + schoolName + ",所属教育局:" + jyjName + ",班级数量:" + classCount + ",学生数量:" + studentCount + ",教师数量:" + teacherCount + ",专任教师数量:" + zhuanRenCount + ";"); - schoolMap.put(jyjName, list); + areaMap.put(jyjName, list); } //将数据写入到EXCEL for (int i = 0; i < areaSet.size(); i++) { @@ -139,7 +67,7 @@ public class TestMaxKB { cell = row.createCell(0); } cell.setCellValue(area + "下的学校列表"); - cell.setCellStyle(style); + cell.setCellStyle(cellStyle); //(2)回答 cell = row.getCell(1); @@ -148,11 +76,11 @@ public class TestMaxKB { } String content = ""; - for (String s : schoolMap.get(area)) { + for (String s : areaMap.get(area)) { content = content + s + "\n"; } cell.setCellValue(content); - cell.setCellStyle(style); + cell.setCellStyle(cellStyle); //(3)可选问题名称 cell = row.getCell(2); @@ -160,14 +88,16 @@ public class TestMaxKB { cell = row.createCell(2); } cell.setCellValue(area + "下的学校列表"); - cell.setCellStyle(style); + cell.setCellStyle(cellStyle); } // 保存文件 - FileOutputStream fileOut = new FileOutputStream(outputPath); - workbookTemplate.write(fileOut); + FileOutputStream fileOut = new FileOutputStream(target); + wbTemplate.write(fileOut); //关闭文件 fSource.close(); - workbook.close(); + wbSource.close(); + + System.out.println("写入成功"); } }