From a7f413a28f55cfed7d66412b225c883b043bd969 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Tue, 19 Nov 2024 10:32:48 +0800 Subject: [PATCH] 'commit' --- .../base/Tools/Test/TestOutSideExcel.java | 40 ++++++++----------- 1 file changed, 16 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/dsideal/base/Tools/Test/TestOutSideExcel.java b/src/main/java/com/dsideal/base/Tools/Test/TestOutSideExcel.java index c016f9a1..aa8e9444 100644 --- a/src/main/java/com/dsideal/base/Tools/Test/TestOutSideExcel.java +++ b/src/main/java/com/dsideal/base/Tools/Test/TestOutSideExcel.java @@ -67,12 +67,12 @@ public class TestOutSideExcel { * @param workingPath * @param chartNumber */ - public static List> readChar(String workingPath, int chartNumber) throws DocumentException { - List> matrix = new ArrayList<>(); + public static List> readChart(String workingPath, int chartNumber) throws DocumentException { + List> matrix = new ArrayList<>(); String xml = workingPath + "\\word\\charts\\chart" + chartNumber + ".xml"; if (!(new File(xml).exists())) { System.out.println("没有找到第" + chartNumber + "个图表"); - return matrix ; + return matrix; } //3、开始读取 // 创建 SAXReader 对象,读取 XML 文件 @@ -87,7 +87,6 @@ public class TestOutSideExcel { //在每个已知的图表类型中查找,找到后跳出循环 //声明一个数组,图表的所有类型 String[] CHART_TYPES = {"lineChart", "barChart"};//折线,柱状 - String type = ""; for (String chartType : CHART_TYPES) { if (root.element("chart").element("plotArea") @@ -102,15 +101,12 @@ public class TestOutSideExcel { System.exit(-1); } - List xList = root.element("chart").element("plotArea") - .element(type).element("ser").element("cat") + List xList = root.element("chart").element("plotArea").element(type).element("ser").element("cat") .element("numRef").element("numCache").elements("pt"); - - List allValueList = new ArrayList<>(); + List listObject = new ArrayList<>(); ///c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:val/c:numRef/c:numCache - for (Element ser : root.element("chart").element("plotArea") - .element(type).elements("ser")) { + for (Element ser : root.element("chart").element("plotArea").element(type).elements("ser")) { List yList = ser.element("val").element("numRef").element("numCache").elements("pt"); //记录都有哪些有效数值和索引号 @@ -118,16 +114,16 @@ public class TestOutSideExcel { for (Element e : yList) { map.put(Integer.parseInt(e.attribute("idx").getValue()), e); } - List lo = new ArrayList<>(); + List list = new ArrayList<>(); for (int i = 0; i < xList.size(); i++) { - lo.add(map.getOrDefault(i, null)); + list.add(map.getOrDefault(i, null)); } - allValueList.add(lo); + listObject.add(list); } - - for (int i = 0; i < allValueList.size(); i++) { + //数据是按行读取的 + for (int i = 0; i < listObject.size(); i++) { List row = new ArrayList<>(); - List lo = (List) allValueList.get(i); + List lo = (List) listObject.get(i); for (Element e : lo) { if (e == null) { row.add(null); @@ -138,13 +134,10 @@ public class TestOutSideExcel { matrix.add(row); } //上面生成的数据格式需要行转列,横坐标是年份,纵坐标是数据 - // 计算行数和列数 - int rowCount = matrix.size(); + int rowCount = matrix.size();// 计算行数和列数 int colCount = matrix.getFirst().size(); - // 创建一个一维列表,用于存储转换后的列 List> transposed = new ArrayList<>(); - // 遍历每一列 for (int col = 0; col < colCount; col++) { // 创建一个新的内部列表,用于存储当前列的所有行 @@ -156,8 +149,7 @@ public class TestOutSideExcel { // 将当前列添加到结果列表中 transposed.add(column); } - - // 在每一行的第一列插入序号 + // 在每一行的第一列插入年份 for (int i = 0; i < transposed.size(); i++) { List column = transposed.get(i); column.addFirst(xList.get(i).element("v").getText()); // 在每行的开始插入序号 @@ -172,10 +164,10 @@ public class TestOutSideExcel { String workingPath = "C:\\zipFile"; UnCompress(sourceDoc, workingPath); //2、我们需要第几个图表 - for (int chartNumber = 4; chartNumber <= 4; chartNumber++) { + for (int chartNumber = 1; chartNumber <= 37; chartNumber++) { System.out.println("正在处理第" + chartNumber + "个图表的信息~"); //读取图表 - List> list = readChar(workingPath, chartNumber); + List> list = readChart(workingPath, chartNumber); ExcelKit.printTable(list); System.out.println("========================================================="); }