diff --git a/Excel/幼儿入园.xlsx b/Excel/幼儿入园.xlsx index f2ca5075..8ed27ec9 100644 Binary files a/Excel/幼儿入园.xlsx and b/Excel/幼儿入园.xlsx differ diff --git a/src/main/java/com/dsideal/base/Tools/ExportExcel.java b/src/main/java/com/dsideal/base/Tools/ExportExcel.java index 66cb1699..980afcd5 100644 --- a/src/main/java/com/dsideal/base/Tools/ExportExcel.java +++ b/src/main/java/com/dsideal/base/Tools/ExportExcel.java @@ -146,6 +146,16 @@ public class ExportExcel { districtMergeStartRow, rowNum - 1, 0, 0)); } + // 合并表头中的"年份"列 + sheet.addMergedRegion(new CellRangeAddress(0, 0, 1, 2)); + + // 为合并后的单元格重新设置样式(避免合并后样式丢失) + Cell mergedCell = headerRow.getCell(1); + if (mergedCell != null) { + mergedCell.setCellValue("年份"); + mergedCell.setCellStyle(headerStyle); + } + // 保存文件 try (FileOutputStream fileOut = new FileOutputStream(filePath)) { workbook.write(fileOut); diff --git a/src/main/resources/Sql/ExportExcel.sql b/src/main/resources/Sql/ExportExcel.sql index b632bf31..93afa2d8 100644 --- a/src/main/resources/Sql/ExportExcel.sql +++ b/src/main/resources/Sql/ExportExcel.sql @@ -1,191 +1,192 @@ #namespace("exportExcel") -- 学前入园幼儿入园总量 #sql("Xqry") - -- 入园总量数据查询 - (SELECT - 行政区划, - '入园数' as 类型, - '城区' as 分类, - MAX(IF(年份 = 2023, 区域数值, NULL)) as '2023', - MAX(IF(年份 = 2024, 区域数值, NULL)) as '2024', - MAX(IF(年份 = 2025, 区域数值, NULL)) as '2025', - MAX(IF(年份 = 2026, 区域数值, NULL)) as '2026', - MAX(IF(年份 = 2027, 区域数值, NULL)) as '2027', - MAX(IF(年份 = 2028, 区域数值, NULL)) as '2028', - MAX(IF(年份 = 2029, 区域数值, NULL)) as '2029', - MAX(IF(年份 = 2030, 区域数值, NULL)) as '2030', - MAX(IF(年份 = 2031, 区域数值, NULL)) as '2031', - MAX(IF(年份 = 2032, 区域数值, NULL)) as '2032', - MAX(IF(年份 = 2033, 区域数值, NULL)) as '2033', - MAX(IF(年份 = 2034, 区域数值, NULL)) as '2034' - FROM excel_学前幼儿入园总量_b25b1b09b0 - WHERE 区域分类 = '城区' - GROUP BY 行政区划) + -- 入园总量数据查询 +(SELECT + 行政区划, + '入园数' as 类型, + '城区' as 分类, + MAX(IF(年份 = 2023, 区域数值, NULL)) as '2023', + MAX(IF(年份 = 2024, 区域数值, NULL)) as '2024', + MAX(IF(年份 = 2025, 区域数值, NULL)) as '2025', + MAX(IF(年份 = 2026, 区域数值, NULL)) as '2026', + MAX(IF(年份 = 2027, 区域数值, NULL)) as '2027', + MAX(IF(年份 = 2028, 区域数值, NULL)) as '2028', + MAX(IF(年份 = 2029, 区域数值, NULL)) as '2029', + MAX(IF(年份 = 2030, 区域数值, NULL)) as '2030', + MAX(IF(年份 = 2031, 区域数值, NULL)) as '2031', + MAX(IF(年份 = 2032, 区域数值, NULL)) as '2032', + MAX(IF(年份 = 2033, 区域数值, NULL)) as '2033', + MAX(IF(年份 = 2034, 区域数值, NULL)) as '2034' +FROM excel_学前幼儿入园总量_b25b1b09b0 +WHERE 区域分类 = '城区' +GROUP BY 行政区划) - UNION ALL +UNION ALL - (SELECT - 行政区划, - '入园数' as 类型, - '镇区' as 分类, - MAX(IF(年份 = 2023, 区域数值, NULL)) as '2023', - MAX(IF(年份 = 2024, 区域数值, NULL)) as '2024', - MAX(IF(年份 = 2025, 区域数值, NULL)) as '2025', - MAX(IF(年份 = 2026, 区域数值, NULL)) as '2026', - MAX(IF(年份 = 2027, 区域数值, NULL)) as '2027', - MAX(IF(年份 = 2028, 区域数值, NULL)) as '2028', - MAX(IF(年份 = 2029, 区域数值, NULL)) as '2029', - MAX(IF(年份 = 2030, 区域数值, NULL)) as '2030', - MAX(IF(年份 = 2031, 区域数值, NULL)) as '2031', - MAX(IF(年份 = 2032, 区域数值, NULL)) as '2032', - MAX(IF(年份 = 2033, 区域数值, NULL)) as '2033', - MAX(IF(年份 = 2034, 区域数值, NULL)) as '2034' - FROM excel_学前幼儿入园总量_b25b1b09b0 - WHERE 区域分类 = '镇区' - GROUP BY 行政区划) +(SELECT + 行政区划, + '入园数' as 类型, + '镇区' as 分类, + MAX(IF(年份 = 2023, 区域数值, NULL)) as '2023', + MAX(IF(年份 = 2024, 区域数值, NULL)) as '2024', + MAX(IF(年份 = 2025, 区域数值, NULL)) as '2025', + MAX(IF(年份 = 2026, 区域数值, NULL)) as '2026', + MAX(IF(年份 = 2027, 区域数值, NULL)) as '2027', + MAX(IF(年份 = 2028, 区域数值, NULL)) as '2028', + MAX(IF(年份 = 2029, 区域数值, NULL)) as '2029', + MAX(IF(年份 = 2030, 区域数值, NULL)) as '2030', + MAX(IF(年份 = 2031, 区域数值, NULL)) as '2031', + MAX(IF(年份 = 2032, 区域数值, NULL)) as '2032', + MAX(IF(年份 = 2033, 区域数值, NULL)) as '2033', + MAX(IF(年份 = 2034, 区域数值, NULL)) as '2034' +FROM excel_学前幼儿入园总量_b25b1b09b0 +WHERE 区域分类 = '镇区' +GROUP BY 行政区划) - UNION ALL +UNION ALL - (SELECT - 行政区划, - '入园数' as 类型, - '乡村' as 分类, - MAX(IF(年份 = 2023, 区域数值, NULL)) as '2023', - MAX(IF(年份 = 2024, 区域数值, NULL)) as '2024', - MAX(IF(年份 = 2025, 区域数值, NULL)) as '2025', - MAX(IF(年份 = 2026, 区域数值, NULL)) as '2026', - MAX(IF(年份 = 2027, 区域数值, NULL)) as '2027', - MAX(IF(年份 = 2028, 区域数值, NULL)) as '2028', - MAX(IF(年份 = 2029, 区域数值, NULL)) as '2029', - MAX(IF(年份 = 2030, 区域数值, NULL)) as '2030', - MAX(IF(年份 = 2031, 区域数值, NULL)) as '2031', - MAX(IF(年份 = 2032, 区域数值, NULL)) as '2032', - MAX(IF(年份 = 2033, 区域数值, NULL)) as '2033', - MAX(IF(年份 = 2034, 区域数值, NULL)) as '2034' - FROM excel_学前幼儿入园总量_b25b1b09b0 - WHERE 区域分类 = '乡村' - GROUP BY 行政区划) +(SELECT + 行政区划, + '入园数' as 类型, + '乡村' as 分类, + MAX(IF(年份 = 2023, 区域数值, NULL)) as '2023', + MAX(IF(年份 = 2024, 区域数值, NULL)) as '2024', + MAX(IF(年份 = 2025, 区域数值, NULL)) as '2025', + MAX(IF(年份 = 2026, 区域数值, NULL)) as '2026', + MAX(IF(年份 = 2027, 区域数值, NULL)) as '2027', + MAX(IF(年份 = 2028, 区域数值, NULL)) as '2028', + MAX(IF(年份 = 2029, 区域数值, NULL)) as '2029', + MAX(IF(年份 = 2030, 区域数值, NULL)) as '2030', + MAX(IF(年份 = 2031, 区域数值, NULL)) as '2031', + MAX(IF(年份 = 2032, 区域数值, NULL)) as '2032', + MAX(IF(年份 = 2033, 区域数值, NULL)) as '2033', + MAX(IF(年份 = 2034, 区域数值, NULL)) as '2034' +FROM excel_学前幼儿入园总量_b25b1b09b0 +WHERE 区域分类 = '乡村' +GROUP BY 行政区划) - UNION ALL +UNION ALL - (SELECT - 行政区划, - '入园数' as 类型, - '总数' as 分类, - MAX(IF(年份 = 2023, 总量数值, NULL)) as '2023', - MAX(IF(年份 = 2024, 总量数值, NULL)) as '2024', - MAX(IF(年份 = 2025, 总量数值, NULL)) as '2025', - MAX(IF(年份 = 2026, 总量数值, NULL)) as '2026', - MAX(IF(年份 = 2027, 总量数值, NULL)) as '2027', - MAX(IF(年份 = 2028, 总量数值, NULL)) as '2028', - MAX(IF(年份 = 2029, 总量数值, NULL)) as '2029', - MAX(IF(年份 = 2030, 总量数值, NULL)) as '2030', - MAX(IF(年份 = 2031, 总量数值, NULL)) as '2031', - MAX(IF(年份 = 2032, 总量数值, NULL)) as '2032', - MAX(IF(年份 = 2033, 总量数值, NULL)) as '2033', - MAX(IF(年份 = 2034, 总量数值, NULL)) as '2034' - FROM excel_学前幼儿入园总量_b25b1b09b0 - WHERE 总量分类 = '总入园数' - GROUP BY 行政区划) +(SELECT + 行政区划, + '入园数' as 类型, + '总数' as 分类, + MAX(IF(年份 = 2023, 总量数值, NULL)) as '2023', + MAX(IF(年份 = 2024, 总量数值, NULL)) as '2024', + MAX(IF(年份 = 2025, 总量数值, NULL)) as '2025', + MAX(IF(年份 = 2026, 总量数值, NULL)) as '2026', + MAX(IF(年份 = 2027, 总量数值, NULL)) as '2027', + MAX(IF(年份 = 2028, 总量数值, NULL)) as '2028', + MAX(IF(年份 = 2029, 总量数值, NULL)) as '2029', + MAX(IF(年份 = 2030, 总量数值, NULL)) as '2030', + MAX(IF(年份 = 2031, 总量数值, NULL)) as '2031', + MAX(IF(年份 = 2032, 总量数值, NULL)) as '2032', + MAX(IF(年份 = 2033, 总量数值, NULL)) as '2033', + MAX(IF(年份 = 2034, 总量数值, NULL)) as '2034' +FROM excel_学前幼儿入园总量_b25b1b09b0 +WHERE 总量分类 = '总入园数' +GROUP BY 行政区划) - UNION ALL - -- 在园总量数据查询 +UNION ALL +-- 在园总量数据查询 - (SELECT - 行政区划, - '在园幼儿数' as 类型, - '城区' as 分类, - MAX(IF(年份 = 2023, 区域数值, NULL)) as '2023', - MAX(IF(年份 = 2024, 区域数值, NULL)) as '2024', - MAX(IF(年份 = 2025, 区域数值, NULL)) as '2025', - MAX(IF(年份 = 2026, 区域数值, NULL)) as '2026', - MAX(IF(年份 = 2027, 区域数值, NULL)) as '2027', - MAX(IF(年份 = 2028, 区域数值, NULL)) as '2028', - MAX(IF(年份 = 2029, 区域数值, NULL)) as '2029', - MAX(IF(年份 = 2030, 区域数值, NULL)) as '2030', - MAX(IF(年份 = 2031, 区域数值, NULL)) as '2031', - MAX(IF(年份 = 2032, 区域数值, NULL)) as '2032', - MAX(IF(年份 = 2033, 区域数值, NULL)) as '2033', - MAX(IF(年份 = 2034, 区域数值, NULL)) as '2034' - FROM excel_学前幼儿在园总量_c04222fd74 - WHERE 区域分类 = '城区' - GROUP BY 行政区划) +(SELECT + 行政区划, + '在园幼儿数' as 类型, + '城区' as 分类, + MAX(IF(年份 = 2023, 区域数值, NULL)) as '2023', + MAX(IF(年份 = 2024, 区域数值, NULL)) as '2024', + MAX(IF(年份 = 2025, 区域数值, NULL)) as '2025', + MAX(IF(年份 = 2026, 区域数值, NULL)) as '2026', + MAX(IF(年份 = 2027, 区域数值, NULL)) as '2027', + MAX(IF(年份 = 2028, 区域数值, NULL)) as '2028', + MAX(IF(年份 = 2029, 区域数值, NULL)) as '2029', + MAX(IF(年份 = 2030, 区域数值, NULL)) as '2030', + MAX(IF(年份 = 2031, 区域数值, NULL)) as '2031', + MAX(IF(年份 = 2032, 区域数值, NULL)) as '2032', + MAX(IF(年份 = 2033, 区域数值, NULL)) as '2033', + MAX(IF(年份 = 2034, 区域数值, NULL)) as '2034' +FROM excel_学前幼儿在园总量_c04222fd74 +WHERE 区域分类 = '城区' +GROUP BY 行政区划) - UNION ALL +UNION ALL - (SELECT - 行政区划, - '在园幼儿数' as 类型, - '镇区' as 分类, - MAX(IF(年份 = 2023, 区域数值, NULL)) as '2023', - MAX(IF(年份 = 2024, 区域数值, NULL)) as '2024', - MAX(IF(年份 = 2025, 区域数值, NULL)) as '2025', - MAX(IF(年份 = 2026, 区域数值, NULL)) as '2026', - MAX(IF(年份 = 2027, 区域数值, NULL)) as '2027', - MAX(IF(年份 = 2028, 区域数值, NULL)) as '2028', - MAX(IF(年份 = 2029, 区域数值, NULL)) as '2029', - MAX(IF(年份 = 2030, 区域数值, NULL)) as '2030', - MAX(IF(年份 = 2031, 区域数值, NULL)) as '2031', - MAX(IF(年份 = 2032, 区域数值, NULL)) as '2032', - MAX(IF(年份 = 2033, 区域数值, NULL)) as '2033', - MAX(IF(年份 = 2034, 区域数值, NULL)) as '2034' - FROM excel_学前幼儿在园总量_c04222fd74 - WHERE 区域分类 = '镇区' - GROUP BY 行政区划) +(SELECT + 行政区划, + '在园幼儿数' as 类型, + '镇区' as 分类, + MAX(IF(年份 = 2023, 区域数值, NULL)) as '2023', + MAX(IF(年份 = 2024, 区域数值, NULL)) as '2024', + MAX(IF(年份 = 2025, 区域数值, NULL)) as '2025', + MAX(IF(年份 = 2026, 区域数值, NULL)) as '2026', + MAX(IF(年份 = 2027, 区域数值, NULL)) as '2027', + MAX(IF(年份 = 2028, 区域数值, NULL)) as '2028', + MAX(IF(年份 = 2029, 区域数值, NULL)) as '2029', + MAX(IF(年份 = 2030, 区域数值, NULL)) as '2030', + MAX(IF(年份 = 2031, 区域数值, NULL)) as '2031', + MAX(IF(年份 = 2032, 区域数值, NULL)) as '2032', + MAX(IF(年份 = 2033, 区域数值, NULL)) as '2033', + MAX(IF(年份 = 2034, 区域数值, NULL)) as '2034' +FROM excel_学前幼儿在园总量_c04222fd74 +WHERE 区域分类 = '镇区' +GROUP BY 行政区划) - UNION ALL +UNION ALL - (SELECT - 行政区划, - '在园幼儿数' as 类型, - '乡村' as 分类, - MAX(IF(年份 = 2023, 区域数值, NULL)) as '2023', - MAX(IF(年份 = 2024, 区域数值, NULL)) as '2024', - MAX(IF(年份 = 2025, 区域数值, NULL)) as '2025', - MAX(IF(年份 = 2026, 区域数值, NULL)) as '2026', - MAX(IF(年份 = 2027, 区域数值, NULL)) as '2027', - MAX(IF(年份 = 2028, 区域数值, NULL)) as '2028', - MAX(IF(年份 = 2029, 区域数值, NULL)) as '2029', - MAX(IF(年份 = 2030, 区域数值, NULL)) as '2030', - MAX(IF(年份 = 2031, 区域数值, NULL)) as '2031', - MAX(IF(年份 = 2032, 区域数值, NULL)) as '2032', - MAX(IF(年份 = 2033, 区域数值, NULL)) as '2033', - MAX(IF(年份 = 2034, 区域数值, NULL)) as '2034' - FROM excel_学前幼儿在园总量_c04222fd74 - WHERE 区域分类 = '乡村' - GROUP BY 行政区划) - UNION ALL - (SELECT - 行政区划, - '在园幼儿数' as 类型, - '总数' as 分类, - MAX(IF(年份 = 2023, 总量数值, NULL)) as '2023', - MAX(IF(年份 = 2024, 总量数值, NULL)) as '2024', - MAX(IF(年份 = 2025, 总量数值, NULL)) as '2025', - MAX(IF(年份 = 2026, 总量数值, NULL)) as '2026', - MAX(IF(年份 = 2027, 总量数值, NULL)) as '2027', - MAX(IF(年份 = 2028, 总量数值, NULL)) as '2028', - MAX(IF(年份 = 2029, 总量数值, NULL)) as '2029', - MAX(IF(年份 = 2030, 总量数值, NULL)) as '2030', - MAX(IF(年份 = 2031, 总量数值, NULL)) as '2031', - MAX(IF(年份 = 2032, 总量数值, NULL)) as '2032', - MAX(IF(年份 = 2033, 总量数值, NULL)) as '2033', - MAX(IF(年份 = 2034, 总量数值, NULL)) as '2034' - FROM excel_学前幼儿在园总量_c04222fd74 - WHERE 总量分类 = '总在园数' - GROUP BY 行政区划) +(SELECT + 行政区划, + '在园幼儿数' as 类型, + '乡村' as 分类, + MAX(IF(年份 = 2023, 区域数值, NULL)) as '2023', + MAX(IF(年份 = 2024, 区域数值, NULL)) as '2024', + MAX(IF(年份 = 2025, 区域数值, NULL)) as '2025', + MAX(IF(年份 = 2026, 区域数值, NULL)) as '2026', + MAX(IF(年份 = 2027, 区域数值, NULL)) as '2027', + MAX(IF(年份 = 2028, 区域数值, NULL)) as '2028', + MAX(IF(年份 = 2029, 区域数值, NULL)) as '2029', + MAX(IF(年份 = 2030, 区域数值, NULL)) as '2030', + MAX(IF(年份 = 2031, 区域数值, NULL)) as '2031', + MAX(IF(年份 = 2032, 区域数值, NULL)) as '2032', + MAX(IF(年份 = 2033, 区域数值, NULL)) as '2033', + MAX(IF(年份 = 2034, 区域数值, NULL)) as '2034' +FROM excel_学前幼儿在园总量_c04222fd74 +WHERE 区域分类 = '乡村' +GROUP BY 行政区划) - ORDER BY 行政区划, - CASE 类型 - WHEN '入园数' THEN 1 - WHEN '在园数' THEN 2 - END, - CASE 分类 - WHEN '总入园数' THEN 1 - WHEN '总在园数' THEN 1 - WHEN '城区' THEN 2 - WHEN '镇区' THEN 3 - WHEN '乡村' THEN 4 - END; +UNION ALL + +(SELECT + 行政区划, + '在园幼儿数' as 类型, + '总数' as 分类, + MAX(IF(年份 = 2023, 总量数值, NULL)) as '2023', + MAX(IF(年份 = 2024, 总量数值, NULL)) as '2024', + MAX(IF(年份 = 2025, 总量数值, NULL)) as '2025', + MAX(IF(年份 = 2026, 总量数值, NULL)) as '2026', + MAX(IF(年份 = 2027, 总量数值, NULL)) as '2027', + MAX(IF(年份 = 2028, 总量数值, NULL)) as '2028', + MAX(IF(年份 = 2029, 总量数值, NULL)) as '2029', + MAX(IF(年份 = 2030, 总量数值, NULL)) as '2030', + MAX(IF(年份 = 2031, 总量数值, NULL)) as '2031', + MAX(IF(年份 = 2032, 总量数值, NULL)) as '2032', + MAX(IF(年份 = 2033, 总量数值, NULL)) as '2033', + MAX(IF(年份 = 2034, 总量数值, NULL)) as '2034' +FROM excel_学前幼儿在园总量_c04222fd74 +WHERE 总量分类 = '总在园数' +GROUP BY 行政区划) + +ORDER BY 行政区划, +CASE 类型 + WHEN '入园数' THEN 1 + WHEN '在园幼儿数' THEN 2 +END, +CASE 分类 + WHEN '城区' THEN 1 + WHEN '镇区' THEN 2 + WHEN '乡村' THEN 3 + WHEN '总数' THEN 4 +END; #end #end \ No newline at end of file