kgdxpr 8 months ago
commit ddcf94df15

@ -99,6 +99,7 @@ public class A9 {
for (List<String> row : source1) {
String year = row.getFirst().split("\\.")[0];
year = year.replace("年", "");
Row outRow = outSheet.createRow(++rowIndex);
String q1 = row.get(1);
if (StrKit.isBlank(q1)) {
@ -128,6 +129,7 @@ public class A9 {
for (List<String> row : source2) {
String year = row.getFirst().split("\\.")[0];
year = year.replace("年", "");
Row outRow = outSheet.createRow(++rowIndex);
String q1 = row.get(1);
if (StrKit.isBlank(q1)) {

@ -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();
}
}

@ -1,149 +0,0 @@
package com.dsideal.base.Tools.Test;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import java.io.File;
import java.io.IOException;
import java.util.*;
public class ConvertExcel {
// 获取系统的临时文件目录
private static final String tempDir = System.getProperty("java.io.tmpdir");
public static void main(String[] args) throws IOException {
String source = "D:\\dsWork\\dsProject\\dsBase\\src\\main\\java\\com\\dsideal\\base\\Tools\\Sample.xlsx";
File file = new File(source);
//哪些列是固定不动的,比如此处是第0列与第1列是不动的就是年份+学段
List<Integer> fixedColumns = new ArrayList<>();
fixedColumns.add(0);
fixedColumns.add(1);
//每列的列号与列名对应关系
String[] colNames = new String[1024];
int cl = 0;
// 读取Excel数据
ExcelReader reader = ExcelUtil.getReader(file);
// 创建临时文件文件名具有随机UUID扩展名为.xlsx
//利用uuid生成一个临时文件名
String uuidFileName = UUID.randomUUID().toString().toUpperCase() + ".xlsx";
String output = tempDir + uuidFileName;
// 创建一个ExcelWriter对象初始化时会创建一个空的Excel文件
ExcelWriter writer = ExcelUtil.getWriter(output);
//表头
List<List<Object>> read = reader.read(0, 0);//第0行是表头
for (int i = 0; i < reader.getColumnCount(); i++) {
colNames[cl++] = read.getFirst().get(i).toString();
}
//数据
List<List<Object>> data = reader.read(1, reader.getRowCount());//从第1行读取到最后一行
for (List<Object> row : data) {
//拆分每一行的数据
for (int i = 0; i < reader.getColumnCount(); i++) {
if (!fixedColumns.contains(i)) {//非fixedColumns列进行枚举
List<String> rowData = new ArrayList<>();
//输出固定列的名称和值
for (int cNum : fixedColumns) {
String value = row.get(cNum).toString();//列值
rowData.add(value);
}
String cName = colNames[i];//列名
String value = row.get(i).toString();
rowData.add(cName);
rowData.add(value);
writer.writeRow(rowData);
}
}
}
writer.flush();
writer.close();
reader.close();
/***************************************************************************************/
//上面的代码没动过,下面是新写的
reader = ExcelUtil.getReader(output);
//前面固定的
List<String> header = new ArrayList<>();
header.add("年份");
header.add("学段");
header.add("区域分类");
header.add("总量分类");
header.add("区域数值");
header.add("总量数值");
// 写入表头
uuidFileName = UUID.randomUUID().toString().toUpperCase() + ".xlsx";
output = tempDir + uuidFileName;
writer = ExcelUtil.getWriter(output);
writer.writeHeadRow(header);
//还需要继续扩展EXCEL模板实现数据转换
Set<String> setArea = new HashSet<>();
setArea.add("城区");
setArea.add("镇区");
setArea.add("乡村");
List<List<String>> res = new ArrayList<>();
data = reader.read(1, reader.getRowCount());//从第1行读取到最后一行
for (List<Object> row : data) {
List<String> rowData = new ArrayList<>();
//输出固定列的名称和值
rowData.add(row.get(0).toString());//年度
rowData.add(row.get(1).toString());//学段
if (setArea.contains(row.get(2).toString())) {//如果是城区、镇区、乡村
rowData.add(row.get(2).toString());
rowData.add("");
rowData.add(row.get(3).toString());
rowData.add("");
} else {
rowData.add("");
rowData.add(row.get(2).toString());
rowData.add("");
rowData.add(row.get(3).toString());
}
res.add(rowData);
}
// 排序
Collections.sort(res, new Comparator<List<String>>() {
@Override
public int compare(List<String> o1, List<String> o2) {
// 先比较年份
// int yearCompare = o1.get(0).compareTo(o2.get(0));
// if (yearCompare != 0) {
// return yearCompare;
// }
// 年份相同,比较学段
int stageCompare = o1.get(1).compareTo(o2.get(1));
if (stageCompare != 0) {
return stageCompare;
}
// 学段相同,比较区域分类
int areaCompare = o1.get(2).compareTo(o2.get(2));
if (areaCompare != 0) {
return areaCompare;
}
// 区域分类相同,比较总量分类
return o1.get(3).compareTo(o2.get(3));
}
});
for (List<String> re : res) {
writer.writeRow(re);
}
reader.close();
writer.flush();
writer.close();
//打开文件所在目录,并聚焦文件
Runtime.getRuntime().exec("explorer.exe /e,/select," + output);
}
}

@ -1,67 +0,0 @@
package com.dsideal.base.Tools.Test;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
import com.jcraft.jsch.JSchException;
import java.io.File;
import java.io.IOException;
import java.util.List;
import com.jfinal.plugin.activerecord.Record;
public class ExportExcel {
public static DataEaseModel dm = new DataEaseModel();
public static void main(String[] args) throws IOException, JSchException {
LocalMysqlConnectUtil.Init();
//Excel的保存目录
String exportPath = "D:/360Downloads/Excel";
File directory = new File(exportPath);
// 检查目录是否存在
if (!directory.exists()) {
directory.mkdirs();
}
String privinceName = "云南省";
//一、导出省的数据集
System.out.println("正在处理省数据集...");
List<Record> list = dm.getDataSetByIdentityId(1,null);
System.out.println("数据集个数=" + list.size());
for (Record record : list) {
String tableName = record.getStr("table_name");
String dataSetName = record.getStr("dataset_name");
System.out.println("正在处理数据集:" + dataSetName);
dm.exportExcel(1, tableName, exportPath, privinceName);
}
//二、导出市的数据集
System.out.println("正在处理市数据集...");
String city_name = "昆明市";
list = dm.getDataSetByIdentityId(2,null);
System.out.println("数据集个数=" + list.size());
for (Record record : list) {
String tableName = record.getStr("table_name");
String dataSetName = record.getStr("dataset_name").replace("\\", "").replace("/", "");
System.out.println("正在处理数据集:" + dataSetName);
Record cityRecord = dm.getAreaByName(city_name);
String cityName = cityRecord.getStr("area_name");
dm.exportExcel(2, tableName, exportPath, cityName);
}
//三、导出县区的数据集
System.out.println("正在处理县区数据集...");
String area_name = "寻甸县";
list = dm.getDataSetByIdentityId(3,null);
System.out.println("数据集个数=" + list.size());
for (Record record : list) {
String tableName = record.getStr("table_name");
String dataSetName = record.getStr("dataset_name").replace("\\", "").replace("/", "");
System.out.println("正在处理数据集:" + dataSetName);
Record areaRecord = dm.getAreaByName(area_name);
String areaName = areaRecord.getStr("area_name");
dm.exportExcel(3, tableName, exportPath, areaName);
}
System.out.println("导出完成!");
}
}

@ -1,66 +0,0 @@
package com.dsideal.base.Tools.Test;
import cn.hutool.core.io.FileUtil;
import com.dsideal.base.DataEase.Model.DataEaseModel;
import com.dsideal.base.Tools.FillData.ExcelKit.ExcelKit;
import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.openxml4j.util.ZipSecureFile;
import org.apache.poi.xwpf.usermodel.XWPFChart;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class TestBadExcel {
//开始读取市州word文档
static String parentPath = "D:\\dsWork\\YunNanDsBase\\Doc\\全省及州市县区人口与教育报告集20241023\\16个州市报告2022\\分析报告20240510";
//示例Excel
static String sampleExcelPath = "D:\\dsWork\\YunNanDsBase\\Doc\\待处理\\市\\【11】教育资源配置发展预测\\教育资源配置发展预测(人).xlsx";
public static void main(String[] args) throws IOException, InvalidFormatException {
//初始化数据库连接
LocalMysqlConnectUtil.Init();
//实例化
//找到parentPath下一级目录中所有文件
List<File> files = FileUtil.loopFiles(parentPath, file -> true);
int rowIndex = 0;
//处理这个目录
if (files != null) {
for (File file : files) {
//判断file是不是目录是目录的需要跳过
if (file.isDirectory()) continue;
//城市名称
DataEaseModel dm=new DataEaseModel();
String cityName = dm.getCityName(file.getName());
String fileName = file.getName();
//判断是否为docx文件
if (fileName.endsWith(".docx") && !fileName.startsWith("~")) {
System.out.println("正在处理" + cityName + "市州文件...");
//读取文件
String inputUrl = file.getAbsolutePath();
InputStream is = new FileInputStream(inputUrl);
ZipSecureFile.setMinInflateRatio(-1.0d);
XWPFDocument doc = new XWPFDocument(is);
//排序后的图表
List<XWPFChart> charts = ExcelKit.getSortListForXWPFChart(doc.getCharts());
//数据在图表36教职工总量
int firstChartNumber = 36;
if(cityName.contains("西双版纳州")){
System.out.println("he");
}
charts.get(firstChartNumber - 1).getWorkbook();
}
}
}
}
}

@ -1,43 +0,0 @@
package com.dsideal.base.Tools.Test;
import com.dsideal.base.Tools.FillData.ExcelKit.ExcelKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.openxml4j.util.ZipSecureFile;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xwpf.usermodel.XWPFChart;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class TestC2 {
public static void main(String[] args) throws IOException, InvalidFormatException, InterruptedException {
//处理这个目录
//判断file是不是目录是目录的需要跳过
//城市名称
File file = new File("D:\\dsWork\\YunNanDsBase\\Doc\\全省及州市县区人口与教育报告集20241023\\16个州市报告2022\\分析报告20240510\\昭通市人口变化及其对教育的影响20240416.docx");
String fileName = file.getAbsolutePath();
InputStream is = new FileInputStream(fileName);
ZipSecureFile.setMinInflateRatio(-1.0d);
XWPFDocument doc = new XWPFDocument(is);
//排序后的图表
List<XWPFChart> charts = ExcelKit.getSortListForXWPFChart(doc.getCharts());
System.out.println("图表个数=" + charts.size());
//第34个图表读取不出来
XSSFWorkbook workbook = charts.get(33).getWorkbook();
System.out.println("正在读取第34个图表数据...");
List<List<String>> data = ExcelKit.readSheet(workbook, 2);
System.out.println("数据条数=" + data.size());
is.close();
ExcelKit.printTable(data);
}
}

@ -1,23 +0,0 @@
package com.dsideal.base.Tools.Test;
import com.dsideal.base.Tools.FillData.ExcelKit.ExcelKit;
import java.io.*;
import java.util.List;
public class TestCallPython {
public static void main(String[] args) throws InterruptedException, IOException {
//哪个word文档
String docPath = "D:\\dsWork\\YunNanDsBase\\Doc\\全省及州市县区人口与教育报告集20241023\\16个州市报告2022\\分析报告20240510\\丽江市人口变化及其对教育的影响20240418.docx";
//第几个图表
int tuBiaoNum = 1;
//Excel文件生成位置
String excelPath = "c:/task.xlsx";
//读取生成的EXCEL,使用POI就可以了
List<List<String>> sheetList = ExcelKit.readSheet(excelPath, 1);
System.out.println(sheetList);
}
}

@ -1,27 +0,0 @@
package com.dsideal.base.Tools.Test;
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.util.List;
public class TestCityArea {
public static void main(String[] args) throws Exception {
LocalMysqlConnectUtil.Init();
//实例化
DataEaseModel dm=new DataEaseModel();
List<String> list = dm.getCityNameList();
for (String s : list) {
String sql = "select id from t_dm_area where area_name=?";
String area_id = Db.queryStr(sql, s);
sql = "select * from t_dm_area where parent_id=?";
List<Record> records = Db.find(sql, area_id);
for (Record record : records) {
String area_name = record.getStr("area_name");
System.out.println(s+" "+area_name);
}
}
}
}

@ -1,49 +0,0 @@
package com.dsideal.base.Tools.Test;
import com.dsideal.base.Tools.FillData.ExcelKit.ExcelKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.openxml4j.util.ZipSecureFile;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xwpf.usermodel.XWPFChart;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class TestMulti {
public static void main(String[] args) throws IOException, InvalidFormatException, InterruptedException {
String path = "D:\\dsWork\\YunNanDsBase\\Doc\\全省及州市县区人口与教育报告集20241023\\16个州市报告2022\\分析报告20240510";
//获取此目录下所有的文件需要以docx结尾并且不能以~开头
File file = new File(path);
File[] files = file.listFiles();
for (File f : files) {
if (f.getName().endsWith(".docx") && !f.getName().startsWith("~")) {
String sourceWord = f.getAbsolutePath();
InputStream is = new FileInputStream(sourceWord);
ZipSecureFile.setMinInflateRatio(-1.0d);
XWPFDocument doc = new XWPFDocument(is);
//直接输出图表数量
//System.out.println("doc.getCharts=" + doc.getCharts().size());
List<XWPFChart> chartList = doc.getCharts();
//排序后的图表
chartList = ExcelKit.getSortListForXWPFChart(chartList);
//遍历输出
for (int i = 0; i < chartList.size(); i++) {
XWPFChart chart = chartList.get(i);
XSSFWorkbook workbook = chart.getWorkbook();
XSSFSheet sheet = workbook.getSheetAt(0);
if (sheet.getPhysicalNumberOfRows() == 0) {
System.out.println(sourceWord + ",第" + (i + 1) + "个图表需要人工编辑一下Sheet名称否则无法读取===");
}
}
//关闭流
is.close();
}
}
}
}

@ -1,35 +0,0 @@
package com.dsideal.base.Tools.Test;
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;
import java.util.ArrayList;
import java.util.List;
public class TestRead {
public static void main(String[] args) throws IOException {
//待读取的EXCEL文件
String filePath = "C:\\Users\\Administrator\\全省及州市县区人口与教育报告集20241023\\全省及州市县区人口与教育报告集20241023\\133个县区报告2022\\县区研究报告\\文山州各县市报告8\\马关县\\马关县教育发展规模数据收集表-20240418.xlsx";
//表格正文上方的文字
String keyword = "自动计算招生数、在校生数";
//遍历每个Sheet
for (int k = 0; k < 4; k++) {
//为什么headRows=2?答因为有一行是关键字下一行是表头共2行
//letterIndex=K,表示第二个表格最后一列是字母K
List<List<String>> dataList = ExcelKit.readSecondTable(filePath, k, keyword, 2, "K");
//输出数据
for (int i = 0; i < dataList.size(); i++) {
for (int j = 0; j < dataList.get(i).size(); j++) {
System.out.print(dataList.get(i).get(j) + " ");
}
System.out.println();
}
}
}
}

@ -1,25 +0,0 @@
package com.dsideal.base.Tools.Test;
import com.dsideal.base.Tools.FillData.ExcelKit.ExcelKit;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.dom4j.DocumentException;
import java.io.IOException;
import java.util.*;
public class TestXml {
public static void main(String[] args) throws DocumentException, IOException, InterruptedException, InvalidFormatException {
String sourceDoc = "c:/西双版纳州人口变化及其对教育的影响20240420.docx";
List<List<String>> res = ExcelKit.getChartData(sourceDoc, 1,0);
ExcelKit.printTable(res);
// for (int chartNumber = 1; chartNumber <= 37; chartNumber++) {
// String xml = ExcelKit.DocxUnzipDirectory + "word\\charts\\chart" + chartNumber + ".xml";
// List<List<String>> res = ExcelKit.getChartDataByXml(xml);
// //输出转置后的数据
// System.out.println("正在输出第" + chartNumber + "个图表的数据");
// ExcelKit.printTable(res);
// }
}
}
Loading…
Cancel
Save