main
黄海 8 months ago
parent fd2d69c881
commit 71aeacce5b

@ -1,168 +0,0 @@
package com.dsideal.base.Tools;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Step3_DataSetFakeData {
public static DataEaseModel dm = new DataEaseModel();
/**
*
*
* @param table_name
* @param area_name
*/
public static void CopyData(String table_name, String source_area_name, String area_name, String parent_name) {
String sql = "select * from `" + table_name + "` where `行政区划`='" + source_area_name + "'";
List<Record> list = Db.use(DataEaseModel.DB_NAME).find(sql);
for (Record r : list) {
r.set("行政区划", area_name);
r.set("上级行政区划", parent_name);
r.remove("id");
}
System.out.println(table_name);
Db.use(DataEaseModel.DB_NAME).batchSave(table_name, list, 100);
}
/**
*
*
* @param table_name
* @param area_name
*/
public static void deleteData(String table_name, String area_name) {
String sql = "delete from `" + table_name + "` where `行政区划`='" + area_name + "'";
Db.use(DataEaseModel.DB_NAME).update(sql);
}
public static void main(String[] args) throws IOException {
//切换至测试数据库
//DataEaseModel.DB_NAME = "dataease_huanghai";
//初始化数据库链接
LocalMysqlConnectUtil.Init();
DataEaseModel dm = new DataEaseModel();
//这几个是要保留的地名
List<String> keepArea = Arrays.asList("云南省", "昆明市", "楚雄州", "寻甸县");
//所有市州
Record rPrinvice = dm.getAreaByName("云南省");
String province_id = rPrinvice.getStr("id");
List<Record> listCity = dm.getAreaList(province_id);
// int identity_id = 1;
// //完善省级数据
// List<Record> list = dm.getDataSetByIdentityId(identity_id, null);
// for (Record record : list) {
// String table_name = record.getStr("table_name");
// System.out.println("正在处理数据集:" + table_name);
// String sql = "update `" + table_name + "` set `行政区划`='云南省' where `行政区划` is null";
// Db.use(DataEaseModel.DB_NAME).update(sql);
// sql = "update `" + table_name + "` set `上级行政区划`='云南省' where `上级行政区划` is null";
// Db.use(DataEaseModel.DB_NAME).update(sql);
// }
//
// //拷贝城市数据
// for (Record rCity : listCity) {
// //城市名称
// String area_name = rCity.getStr("area_name");
// //如果在保留名单中,则跳过
// if (keepArea.contains(area_name)) {
// continue;
// }
// //遍历所有市州数据集
// identity_id = 2;
// list = dm.getDataSetByIdentityId(identity_id, null);
// for (Record record : list) {
// String table_name = record.getStr("table_name");
// System.out.println("正在处理数据集:" + area_name + " " + table_name);
// //检查这个行政区划,在本数据表中是不是存在过,判断办法是 列名: `行政区划`= area_name,如果存在则不作处理,否则拷贝昆明市的数据
// deleteData(table_name, area_name);
// CopyData(table_name, "昆明市", area_name, "云南省");
// }
// }
// //获取所有县区
// List<Record> listArea = dm.getProvinceArea("云南省");
// for (Record rArea : listArea) {
// //城市名称
// String area_name = rArea.getStr("area_name");
// String parent_id = rArea.getStr("parent_id");
// //隶属哪个市州
// Record parentRecord = dm.getAreaById(parent_id);
// String parent_name = parentRecord.getStr("area_name");
// //如果在保留名单中,则跳过
// if (keepArea.contains(area_name)) {
// continue;
// }
// //遍历所有县区数据集
// identity_id = 3;
// list = dm.getDataSetByIdentityId(identity_id, null);
// for (Record record : list) {
// String table_name = record.getStr("table_name");
// System.out.println(area_name + "正在处理数据集:" + table_name);
// //检查这个行政区划,在本数据表中是不是存在过,判断办法是 列名: `行政区划`= area_name,如果存在则不作处理,否则拷贝寻甸县的数据
// deleteData(table_name, area_name);
// CopyData(table_name, "寻甸县", area_name, parent_name);
// }
// }
//市州净注入与净流出的数据集
String tableName = "excel_区域人口流动分布_193751804a";
for (Record record : listCity) {
String cityName = record.getStr("area_name");
String sql = "delete from `" + tableName + "` where `行政区划`='" + cityName + "'";
Db.use(DataEaseModel.DB_NAME).update(sql);
System.out.println(cityName + "正在处理数据集:" + tableName);
//if (keepArea.contains(cityName)) continue;
Record rCity = dm.getAreaByName(cityName);
List<Record> lArea = dm.getAreaList(rCity.getStr("id"));
List<Record> writeList = new ArrayList<>();
int x = 0;
for (Record r : lArea) {
x++;
Record rArea = new Record();
rArea.set("行政区划", cityName);
rArea.set("下级行政区划", r.getStr("area_name"));
rArea.set("类型", x % 2 == 1 ? "净流出" : "净流入");
rArea.set("数值", 900);
writeList.add(rArea);
}
Db.use(DataEaseModel.DB_NAME).batchSave(tableName, writeList, 100);
}
// //县区净注入与净流出的数据集
// String tableName = "excel_区域人口流动分布_374179b760";
// int x=0;
// for (Record record : listCity) {
// x++;
// String cityName = record.getStr("area_name");
// if (keepArea.contains(cityName)) continue;
// String sql = "delete from `" + tableName + "` where `上级行政区划`='" + cityName + "'";
// Db.use(DataEaseModel.DB_NAME).update(sql);
//
// System.out.println(cityName + "正在处理数据集:" + tableName);
// Record rCity = dm.getAreaByName(cityName);
// List<Record> lArea = dm.getAreaList(rCity.getStr("id"));
// List<Record> writeList = new ArrayList<>();
// for (Record r : lArea) {
// Record rArea = new Record();
// rArea.set("上级行政区划", cityName);
// rArea.set("行政区划", r.getStr("area_name"));
// rArea.set("类型", x % 2 == 1 ? "净流出" : "净流入");
// rArea.set("数值(人)", 2313250);
// writeList.add(rArea);
// }
// Db.use(DataEaseModel.DB_NAME).batchSave(tableName, writeList, 100);
// }
}
}

@ -1,83 +0,0 @@
package com.dsideal.base.Tools;
import com.dsideal.base.Tools.FillData.ExcelKit.ExcelKit;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;
import java.io.IOException;
public class Step5_ReaderExcel {
public static void main(String[] args) throws IOException {
String filePath = "D:\\dsWork\\YunNanDsBase\\Doc\\待处理\\区\\【1】学前幼儿入园总量预测\\鲁甸县教育发展规模数据收集表.xlsx";
//第一个表格的宽度=23
int firstTableWidth = ExcelKit.transLetter2Num("W") + 1;
//第二个表格的宽度=11
int secondTableWidth = ExcelKit.transLetter2Num("K") + 1;
System.out.println(firstTableWidth);
System.out.println(secondTableWidth);
FileInputStream fis = new FileInputStream(filePath);
Workbook workbook = new XSSFWorkbook(fis);
//遍历前4个工作表
for (int i = 0; i < 4; i++) {
Sheet sheet = workbook.getSheetAt(i);
System.out.println("Sheet Name: " + sheet.getSheetName());
int skipRows = 2;//放过头两行
int rowIndex;
for (rowIndex = skipRows; rowIndex <= sheet.getLastRowNum(); rowIndex++) {
Row row = sheet.getRow(rowIndex);
if (row == null) break;
// 读取表格数据
for (int j = 0; j < firstTableWidth; j++) {
Cell cell = row.getCell(j);
if (cell != null)
System.out.print(ExcelKit.readCell(cell)+"\t");
}
System.out.println();
}
//之所以减1是因为是在判断为空时才停止也就是过了真实数据一行后所以要减1
System.out.println("第一个表格开始行索引=2,结束行索引=" + (rowIndex - 1));
//第二个表格
//从rowIndex开始向下面查找直到第一列中出现文字“自动计算招生数、在校生数”此行的再下一行就是真正的第二个表格的开始位置
int secondTableStartRowIndex = -1, secondTableEndRowIndex = -1;
//找到开始行
for (; rowIndex <= sheet.getLastRowNum(); rowIndex++) {
Row row = sheet.getRow(rowIndex);
if (row != null && row.getCell(0) != null
&& row.getCell(0).toString().contains("自动计算招生数、在校生数")) {
if (secondTableStartRowIndex == -1)
secondTableStartRowIndex = rowIndex;
}
if (secondTableStartRowIndex > 0 && row == null) {
secondTableEndRowIndex = rowIndex - 1;
break;
}
}
//表头有两行需要加2
secondTableStartRowIndex += 2;
//输出第二个表格的开始行索引和结束行索引
System.out.println("第二个表格开始行索引=" + secondTableStartRowIndex + ",结束行索引=" + secondTableEndRowIndex);
//输出第二个表格的数据
for (rowIndex = secondTableStartRowIndex; rowIndex <= secondTableEndRowIndex; rowIndex++) {
Row row = sheet.getRow(rowIndex);
for (int j = 0; j < secondTableWidth; j++) {
Cell cell = row.getCell(j);
// 如果单元格是公式类型
if (cell.getCellType() == CellType.FORMULA) {
// 计算公式结果
cell.setCellType(CellType.NUMERIC);
}
ExcelKit.readCell(cell);
}
System.out.println();
}
}
workbook.close();
fis.close();
}
}
Loading…
Cancel
Save