main
黄海 7 months ago
parent 0aadbe24ba
commit dc334ca60d

Binary file not shown.

@ -59,7 +59,7 @@ public class ExportExcel {
Row headerRow = sheet.createRow(0);
// 设置行高
headerRow.setHeight((short) (28 * 20)); // 28像素 ≈ 28 * 20 缇
String[] headers = {"行政区划", "分类", "2023", "2024", "2025", "2026",
String[] headers = {"行政区划", "年份", "年份", "2023", "2024", "2025", "2026",
"2027", "2028", "2029", "2030", "2031", "2032", "2033", "2034"};
for (int i = 0; i < headers.length; i++) {
Cell cell = headerRow.createCell(i);
@ -67,18 +67,20 @@ public class ExportExcel {
cell.setCellStyle(headerStyle);
sheet.setColumnWidth(i, 3500); // 设置列宽
}
// 写入数据并处理合并单元格
// 写入数据并处理合并单元格
int rowNum = 1;
String lastDistrict = "";
int mergeStartRow = 1;
String lastType = "";
int districtMergeStartRow = 1; // 行政区划合并起始行
int typeMergeStartRow = 1; // 类型合并起始行
for (Record record : records) {
Row row = sheet.createRow(rowNum);
// 设置行高
row.setHeight((short) (28 * 20)); // 28像素 ≈ 28 * 20 缇
row.setHeight((short) (28 * 20));
String currentDistrict = record.getStr("行政区划");
String currentType = record.getStr("类型");
// 填充数据
for (int i = 0; i < headers.length; i++) {
@ -87,9 +89,14 @@ public class ExportExcel {
if (i == 0) {
cell.setCellValue(currentDistrict);
} else if (i == 1) {
}
else if (i == 1) {
cell.setCellValue(currentType);
}
else if (i == 2) {
cell.setCellValue(record.getStr("分类"));
} else {
}
else {
Double value = record.getDouble(headers[i]);
if (value != null) {
cell.setCellValue(value);
@ -97,26 +104,46 @@ public class ExportExcel {
}
}
// 处理合并单元格
// 处理行政区划和类型的合并
if (!currentDistrict.equals(lastDistrict)) {
if (rowNum > mergeStartRow) {
// 合并行政区划列
// 处理上一个行政区划的最后一组类型合并
if (rowNum > typeMergeStartRow) {
sheet.addMergedRegion(new CellRangeAddress(
typeMergeStartRow, rowNum - 1, 1, 1));
}
// 处理行政区划合并
if (rowNum > districtMergeStartRow) {
sheet.addMergedRegion(new CellRangeAddress(
districtMergeStartRow, rowNum - 1, 0, 0));
}
districtMergeStartRow = rowNum;
typeMergeStartRow = rowNum;
}
// 在同一个行政区划内,处理类型的合并
else if (!currentType.equals(lastType)) {
if (rowNum > typeMergeStartRow) {
sheet.addMergedRegion(new CellRangeAddress(
mergeStartRow, rowNum - 1, 0, 0));
typeMergeStartRow, rowNum - 1, 1, 1));
}
mergeStartRow = rowNum;
typeMergeStartRow = rowNum;
}
lastDistrict = currentDistrict;
lastType = currentType;
rowNum++;
}
// 处理最后一组合并
if (rowNum > mergeStartRow) {
// 先处理最后一组类型合并
if (rowNum > typeMergeStartRow) {
sheet.addMergedRegion(new CellRangeAddress(
mergeStartRow, rowNum - 1, 0, 0));
typeMergeStartRow, rowNum - 1, 1, 1));
}
// 再处理最后一组行政区划合并
if (rowNum > districtMergeStartRow) {
sheet.addMergedRegion(new CellRangeAddress(
mergeStartRow, rowNum - 1, 1, 1));
districtMergeStartRow, rowNum - 1, 0, 0));
}
// 保存文件
@ -128,6 +155,7 @@ public class ExportExcel {
e.printStackTrace();
}
}
public static void main(String[] args) {
LocalMysqlConnectUtil.Init();

@ -2,28 +2,6 @@
-- 学前入园幼儿入园总量
#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 )
UNION ALL
(SELECT
,
'入园数' as ,
@ -90,11 +68,10 @@
UNION ALL
-- 在园总量数据查询
(SELECT
(SELECT
,
'园数' as ,
'在园' as ,
'园数' as ,
'' as ,
MAX(IF( = 2023, , NULL)) as '2023',
MAX(IF( = 2024, , NULL)) as '2024',
MAX(IF( = 2025, , NULL)) as '2025',
@ -107,15 +84,16 @@
MAX(IF( = 2032, , NULL)) as '2032',
MAX(IF( = 2033, , NULL)) as '2033',
MAX(IF( = 2034, , NULL)) as '2034'
FROM excel__c04222fd74
WHERE = '园数'
FROM excel__b25b1b09b0
WHERE = '园数'
GROUP BY )
UNION ALL
-- 在园总量数据查询
(SELECT
,
'在园' as ,
'在园幼儿' as ,
'城区' as ,
MAX(IF( = 2023, , NULL)) as '2023',
MAX(IF( = 2024, , NULL)) as '2024',
@ -137,7 +115,7 @@
(SELECT
,
'在园' as ,
'在园幼儿' as ,
'镇区' as ,
MAX(IF( = 2023, , NULL)) as '2023',
MAX(IF( = 2024, , NULL)) as '2024',
@ -159,7 +137,7 @@
(SELECT
,
'在园' as ,
'在园幼儿' as ,
'乡村' as ,
MAX(IF( = 2023, , NULL)) as '2023',
MAX(IF( = 2024, , NULL)) as '2024',
@ -175,6 +153,26 @@
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 )
ORDER BY ,

Loading…
Cancel
Save