diff --git a/Doc/待处理/市/【1】学前教育入园总量变化及预测/学前教育入园总量变化及预测.xlsx b/Doc/待处理/市/【1】学前教育入园总量变化及预测/学前教育入园总量变化及预测.xlsx index b2912c0e..5c03af91 100644 Binary files a/Doc/待处理/市/【1】学前教育入园总量变化及预测/学前教育入园总量变化及预测.xlsx and b/Doc/待处理/市/【1】学前教育入园总量变化及预测/学前教育入园总量变化及预测.xlsx differ diff --git a/Doc/待处理/市/【1】学前教育入园总量变化及预测/学前教育入园总量变化及预测【成果】.xlsx b/Doc/待处理/市/【1】学前教育入园总量变化及预测/学前教育入园总量变化及预测【成果】.xlsx index 7d9c52b7..d365efe7 100644 Binary files a/Doc/待处理/市/【1】学前教育入园总量变化及预测/学前教育入园总量变化及预测【成果】.xlsx and b/Doc/待处理/市/【1】学前教育入园总量变化及预测/学前教育入园总量变化及预测【成果】.xlsx differ diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C1.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C1.java index 96dfd302..73d71a31 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/City/C1.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C1.java @@ -5,9 +5,7 @@ import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; import com.dsideal.base.Tools.Util.ReadDocxUtil; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.openxml4j.util.ZipSecureFile; -import org.apache.poi.ss.usermodel.BorderStyle; -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.usermodel.XSSFCellStyle; import org.apache.poi.xssf.usermodel.XSSFFont; @@ -34,9 +32,9 @@ public class C1 { //目标Excel,就是把文件名解析出来后,后面添加上【成果】,需要动态计算获取,不能写死 String excelPath = sampleExcelPath.replace(".xlsx", "【成果】.xlsx"); //如果目录文件存在,则删除 - File file = new File(excelPath); - if (file.exists()) { - file.delete(); + File fi = new File(excelPath); + if (fi.exists()) { + fi.delete(); } //目标Excel @@ -47,11 +45,23 @@ public class C1 { XSSFFont font = outWorkbook.createFont(); font.setBold(true); // 设置字体加粗 headerStyle.setFont(font); + // 设置边框样式 + headerStyle.setBorderTop(BorderStyle.THIN); + headerStyle.setBorderBottom(BorderStyle.THIN); + headerStyle.setBorderLeft(BorderStyle.THIN); + headerStyle.setBorderRight(BorderStyle.THIN); + // 设置水平和垂直居中 + headerStyle.setAlignment(HorizontalAlignment.CENTER); + headerStyle.setVerticalAlignment(VerticalAlignment.CENTER); + XSSFCellStyle dataStyle = outWorkbook.createCellStyle(); dataStyle.setBorderTop(BorderStyle.THIN); // 上边框 dataStyle.setBorderBottom(BorderStyle.THIN); // 下边框 dataStyle.setBorderLeft(BorderStyle.THIN); // 左边框 dataStyle.setBorderRight(BorderStyle.THIN); // 右边框 + // 设置水平和垂直居中 + dataStyle.setAlignment(HorizontalAlignment.CENTER); + dataStyle.setVerticalAlignment(VerticalAlignment.CENTER); //先把样例的第一行复制到目标输出Excel的第一行中去 Row firstRow = outSheet.createRow(0); @@ -61,85 +71,101 @@ public class C1 { XSSFSheet sampleSheet = sampleWorkbook.getSheet("Sheet1"); Row firstSampleRow = sampleSheet.getRow(0); for (Cell cell : firstSampleRow) { - Cell outCell=firstRow.createCell(cell.getColumnIndex()); + Cell outCell = firstRow.createCell(cell.getColumnIndex()); outCell.setCellValue(ExcelReader.readCell(cell)); outCell.setCellStyle(headerStyle); // 应用加粗样式 } sampleWorkbook.close(); + //开始读取市州word文档 + String parentPath = "D:\\dsWork\\YunNanDsBase\\Doc\\全省及州市县区人口与教育报告集20241023\\16个州市报告2022\\分析报告20240510"; + + //找到parentPath下一级目录中所有文件 + File[] files = new File(parentPath).listFiles(); + //处理这个目录 + if (files != null) { + for (File file : files) { + //判断file是不是目录,是目录的需要跳过 + if (file.isDirectory()) continue; + //城市名称 + String cityName = ru.getCityOrAreaName(file.getName()); + String fileName = file.getName(); + + //判断是否为docx文件 + if (fileName.endsWith(".docx") && !fileName.startsWith("~")) { + //读取文件 + String inputUrl = file.getAbsolutePath(); + InputStream is = new FileInputStream(inputUrl); + ZipSecureFile.setMinInflateRatio(-1.0d); + XWPFDocument doc = new XWPFDocument(is); + + //图表 + List charts = doc.getCharts(); + + //1号模板,数据在图表5和28中 + XWPFChart chart5 = charts.get(4); + XSSFWorkbook workbook = chart5.getWorkbook(); + XSSFSheet sheet = workbook.getSheet("Sheet1"); + //遍历输出sheet的内容 + int rowIndex = 0; + Row outRow; + for (Row row : sheet) { + //遍历row中每一列,中间以tab隔开,然后换行 + + + rowIndex++; + if (rowIndex == 1) { + continue; + } + //年份 + int columnIndex = 0; + String value = ExcelReader.readCell(row.getCell(columnIndex)); + outRow = outSheet.createRow(rowIndex - 1); + outRow.createCell(columnIndex).setCellValue(value); + outRow.getCell(columnIndex).setCellStyle(dataStyle); + //总量分类 + columnIndex = 1; + outRow.createCell(columnIndex).setCellValue("总入园数"); + outRow.getCell(columnIndex).setCellStyle(dataStyle); + //区域分类 + columnIndex = 2; + outRow.createCell(columnIndex).setCellValue(""); + outRow.getCell(columnIndex).setCellStyle(dataStyle); -// //开始读取市州word文档 -// String parentPath = "D:\\dsWork\\YunNanDsBase\\Doc\\全省及州市县区人口与教育报告集20241023\\16个州市报告2022\\分析报告20240510"; -// -// //找到parentPath下一级目录中所有文件 -// File[] files = new File(parentPath).listFiles(); -// //处理这个目录 -// if (files != null) { -// for (File file : files) { -// //判断file是不是目录,是目录的需要跳过 -// if (file.isDirectory()) continue; -// //城市名称 -// String cityName = ru.getCityOrAreaName(file.getName()); -// String fileName = file.getName(); -// -// //判断是否为docx文件 -// if (fileName.endsWith(".docx") && !fileName.startsWith("~")) { -// //读取文件 -// String inputUrl = file.getAbsolutePath(); -// InputStream is = new FileInputStream(inputUrl); -// ZipSecureFile.setMinInflateRatio(-1.0d); -// XWPFDocument doc = new XWPFDocument(is); -// -// //图表 -// List charts = doc.getCharts(); -// -// //1号模板,数据在图表5和28中 -// XWPFChart chart5 = charts.get(4); -// XSSFWorkbook workbook = chart5.getWorkbook(); -// XSSFSheet sheet = workbook.getSheet("Sheet1"); -// //遍历输出sheet的内容 -// int rowIndex = 0; -// Row outRow; -// for (Row row : sheet) { -// rowIndex++; -// if (rowIndex == 1) { -// int columnIndex = 0; -// outRow = outSheet.createRow(rowIndex); -// //将表头也复制过去 -// for (Cell cell : row) { -// outRow.createCell(columnIndex).setCellValue(ExcelReader.readCell(cell)); -// columnIndex++; -// } -// continue; -// } -// //年份 -// int columnIndex = 0; -// String value = ExcelReader.readCell(row.getCell(columnIndex)); -// outRow = outSheet.createRow(rowIndex); -// outRow.createCell(columnIndex).setCellValue(value); -// //行政区划 -// columnIndex = 6; -// outRow.createCell(columnIndex).setCellValue(cityName); -// //上级行政区划 -// columnIndex = 7; -// outRow.createCell(columnIndex).setCellValue("云南省"); -// } -// workbook.close(); -// -// break; -// //XWPFChart chart28 = charts.get(27); -// } -// } -// } + //总量数值 + columnIndex = 3; + value = ExcelReader.readCell(row.getCell(4)); + outRow.createCell(columnIndex).setCellValue(value); + outRow.getCell(columnIndex).setCellStyle(dataStyle); + + //区域数值 + columnIndex = 4; + outRow.createCell(columnIndex).setCellValue(""); + outRow.getCell(columnIndex).setCellStyle(dataStyle); + + //行政区划 + columnIndex = 5; + outRow.createCell(columnIndex).setCellValue(cityName); + outRow.getCell(columnIndex).setCellStyle(dataStyle); + //上级行政区划 + columnIndex = 6; + outRow.createCell(columnIndex).setCellValue("云南省"); + outRow.getCell(columnIndex).setCellStyle(dataStyle); + } + workbook.close(); + + break; + //XWPFChart chart28 = charts.get(27); + } + } + } //保存Excel //设置行的高度=28,列的宽度为自动 outSheet.setDefaultColumnWidth(20); outSheet.setDefaultRowHeight((short) 500); - - FileOutputStream fileOut = new FileOutputStream(excelPath); outWorkbook.write(fileOut); outWorkbook.close();