package Tools.MaxKb; import com.dsideal.QingLong.Util.ExcelCommonUtil; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.*; public class GenerateQA_1 { public static void main(String[] args) throws IOException { //数据源 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(template); Workbook wbTemplate = new XSSFWorkbook(fTemplate); Sheet sheetTemplate = wbTemplate.getSheetAt(0);// 获取第一个工作表 CellStyle style = ExcelCommonUtil.getCellStyle(wbTemplate);//单元格样式 //源文件 FileInputStream fSource = new FileInputStream(source); Workbook wbSource = new XSSFWorkbook(fSource); Sheet sheetSource = wbSource.getSheetAt(0);// 获取第一个工作表 //1、一共有哪些区 Set areaSet = new HashSet<>(); for (int i = 1; i < sheetSource.getLastRowNum(); i++) {//放过表头 Row row = sheetSource.getRow(i); String jyj = ExcelCommonUtil.getStringValue(row.getCell(1));//教育局 areaSet.add(jyj); } //2、记录每个区下有多少个学校,多少个班级,多少个教师,多少个专任教师 Map> areaMap = new HashMap<>(); for (int i = 1; i < sheetSource.getLastRowNum(); i++) {//放过表头 Row row = sheetSource.getRow(i); 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 (areaMap.containsKey(jyjName)) { list = areaMap.get(jyjName); } list.add("学校名称:" + schoolName + ",所属教育局:" + jyjName + ",班级数量:" + classCount + ",学生数量:" + studentCount + ",教师数量:" + teacherCount + ",专任教师数量:" + zhuanRenCount + ";"); areaMap.put(jyjName, list); } //将数据写入到EXCEL for (int i = 0; i < areaSet.size(); i++) { String area = areaSet.toArray()[i].toString(); Row row = sheetTemplate.getRow(i + 1); // 放过表头 if (row == null) { row = sheetTemplate.createRow(i + 1);//创建行 } //(1)问题名称 Cell cell = row.getCell(0); if (cell == null) { cell = row.createCell(0); } cell.setCellValue(area + "下的学校列表"); cell.setCellStyle(style); //(2)回答 cell = row.getCell(1); if (cell == null) { cell = row.createCell(1); } String content = ""; for (String s : areaMap.get(area)) { content = content + s; } //学校数量 content = content + ",学校总数:" + areaMap.get(area).size() + "个。" + "\n"; cell.setCellValue(content); cell.setCellStyle(style); //(3)可选问题名称 cell = row.getCell(2); if (cell == null) { cell = row.createCell(2); } cell.setCellValue(area + "下的学校列表"); cell.setCellStyle(style); } // 保存文件 FileOutputStream fileOut = new FileOutputStream(target); wbTemplate.write(fileOut); //关闭文件 fSource.close(); wbSource.close(); System.out.println("恭喜,所有操作成功完成!"); } }