main
黄海 8 months ago
parent c207f8da95
commit 9b675caf89

@ -4,6 +4,7 @@ import cn.hutool.core.io.FileUtil;
import com.dsideal.base.Tools.FillData.ExcelKit.ExcelKit;
import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
import com.dsideal.base.Tools.Util.ReadDocxUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.openxml4j.util.ZipSecureFile;
import org.apache.poi.ss.usermodel.Row;
@ -86,7 +87,9 @@ public class C2 {
Row outRow = outSheet.createRow(++rowIndex);
// 导出数据
//年份,总量分类,区域分类,总量数值,区域数值,行政区划,上级行政区划
ExcelKit.putData(outRow, new ArrayList<>(Arrays.asList(r.getFirst(), c2, "", r.get(4), "", cityName, "云南省")), dataStyle);
double xvalue = Double.parseDouble(r.get(4));
String value = String.format("%.2f", xvalue);
ExcelKit.putData(outRow, new ArrayList<>(Arrays.asList(r.getFirst().split("\\.")[0], c2, "", value, "", cityName, "云南省")), dataStyle);
}
//2022年基数:遍历source2
for (int i = 0; i < source2.size(); i++) {
@ -94,7 +97,9 @@ public class C2 {
Row outRow = outSheet.createRow(++rowIndex);
// 导出数据
//年份,总量分类,区域分类,总量数值,区域数值,行政区划,上级行政区划
ExcelKit.putData(outRow, new ArrayList<>(Arrays.asList(r.getFirst(), "2022年基数", "", source2.getFirst().get(4),
double xvalue = Double.parseDouble(source2.getFirst().get(4));
String value = String.format("%.2f", xvalue);
ExcelKit.putData(outRow, new ArrayList<>(Arrays.asList(r.getFirst().split("\\.")[0], "2022年基数", "", value,
"", cityName, "云南省")), dataStyle);
}
@ -111,16 +116,24 @@ public class C2 {
List<String> r = source1.get(i);
Row outRow = outSheet.createRow(++rowIndex);
//年份,总量分类,区域分类,总量数值,区域数值,行政区划,上级行政区划
ExcelKit.putData(outRow, new ArrayList<>(Arrays.asList(r.getFirst(), "", areaName, "",
r.get(k + 1), cityName, "云南省")), dataStyle);
String q = r.get(k + 1);
if (StrKit.isBlank(q)) q = "0";
double xvalue = Double.parseDouble(q);
String value = String.format("%.2f", xvalue);
ExcelKit.putData(outRow, new ArrayList<>(Arrays.asList(r.getFirst().split("\\.")[0], "", areaName, "",
value, cityName, "云南省")), dataStyle);
}
for (int i = 0; i < source2.size(); i++) {
if (i == 0) continue;
List<String> r = source2.get(i);
Row outRow = outSheet.createRow(++rowIndex);
//年份,总量分类,区域分类,总量数值,区域数值,行政区划,上级行政区划
ExcelKit.putData(outRow, new ArrayList<>(Arrays.asList(r.getFirst(), "", areaName, "",
r.get(k + 1), cityName, "云南省")), dataStyle);
String q = r.get(k + 1);
if (StrKit.isBlank(q)) q = "0";
double xvalue = Double.parseDouble(q);
String value = String.format("%.2f", xvalue);
ExcelKit.putData(outRow, new ArrayList<>(Arrays.asList(r.getFirst().split("\\.")[0], "", areaName, "",
value, cityName, "云南省")), dataStyle);
}
}
}

@ -489,7 +489,19 @@ public class ExcelKit {
data = ExcelKit.readExcelToList(ExcelKit.excelPath, skipRows);
System.out.println("二次获取数据条目数量:" + data.size() + ",期望数量=" + expectLimit);
//处理数据data
//第一行认为是标准长度从后往前找发现长度小于第一行长度的就remove掉
int firstRowLength = data.getFirst().size();
System.out.println("第一行长度:" + firstRowLength);
for (int i = data.size() - 1; i >= 0; i--) {
List<String> rowData = data.get(i);
if (rowData.size() < firstRowLength) {
data.remove(i);
}
}
} else {
System.out.println("期望数量>=" + expectLimit + ",现在有" + totalRow + "条理解为数据读取正确直接返回POI获取的数据列表...");
}
System.out.println("==========================================================================================================");

@ -0,0 +1,54 @@
package com.dsideal.base.Tools.FillData.Test;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.Tools.FillData.ExcelKit.ExcelKit;
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.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class C2 {
public static void main(String[] args) throws IOException, InvalidFormatException, InterruptedException {
//初始化数据库连接
LocalMysqlConnectUtil.Init();
//实例化
ReadDocxUtil ru = new ReadDocxUtil();
//处理这个目录
//判断file是不是目录是目录的需要跳过
//城市名称
File file = new File("D:\\dsWork\\YunNanDsBase\\Doc\\全省及州市县区人口与教育报告集20241023\\16个州市报告2022\\分析报告20240510\\昭通市人口变化及其对教育的影响20240416.docx");
String cityName = ru.getCityOrAreaName(file.getName());
String fileName = file.getName();
//判断是否为docx文件
if (fileName.endsWith(".docx") && !fileName.startsWith("~")) {
System.out.println("正在处理" + cityName + "市州文件...");
//读取文件
//1号模板数据在图表6和29中
int secondChartNumber = 29;
List<List<String>> source2 = ExcelKit.getChartData(file.getAbsolutePath(), secondChartNumber - 1, 1, 10);
for (int i = 0; i < source2.size(); i++) {
System.out.println(source2.get(i).size());
for (int j = 0; j < source2.get(i).size(); j++) {
System.out.print(source2.get(i).get(j) + "\t");
}
System.out.println();
}
}
}
}
Loading…
Cancel
Save