From fdbbfd03267b3ab4333eeac744ff0de7472e173e 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 08:30:31 +0800 Subject: [PATCH] 'commit' --- .../com/dsideal/base/Tools/Test/Sample.xml | 46 +++++++--------- .../base/Tools/Test/TestOutSideExcel.java | 54 +++++++++++++------ 2 files changed, 57 insertions(+), 43 deletions(-) diff --git a/src/main/java/com/dsideal/base/Tools/Test/Sample.xml b/src/main/java/com/dsideal/base/Tools/Test/Sample.xml index beddb02d..fc2d4a8c 100644 --- a/src/main/java/com/dsideal/base/Tools/Test/Sample.xml +++ b/src/main/java/com/dsideal/base/Tools/Test/Sample.xml @@ -1,12 +1,15 @@ - + - - + + @@ -104,14 +107,11 @@ - + - + @@ -135,7 +135,7 @@ + xmlns:c15="http://schemas.microsoft.com/office/drawing/2012/chart"> @@ -356,13 +356,11 @@ - + - + @@ -407,13 +405,11 @@ - + - + @@ -457,13 +453,11 @@ - + - + @@ -503,13 +497,11 @@ - + - + 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 f522374a..e2b082eb 100644 --- a/src/main/java/com/dsideal/base/Tools/Test/TestOutSideExcel.java +++ b/src/main/java/com/dsideal/base/Tools/Test/TestOutSideExcel.java @@ -1,6 +1,7 @@ package com.dsideal.base.Tools.Test; import com.dsideal.base.Tools.FillData.ExcelKit.ExcelKit; +import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.dom4j.Document; import org.dom4j.DocumentException; @@ -57,10 +58,6 @@ public class TestOutSideExcel { inputStream.close(); } - //折线图 - public static String LINE = "lineChart"; - //柱状图 - public static String BAR = "barChart"; /** * 读取指定的Chart数据 @@ -68,7 +65,7 @@ public class TestOutSideExcel { * @param workingPath * @param chartNumber */ - public static List> readChar(String workingPath, int chartNumber, String type) throws DocumentException { + public static List> readChar(String workingPath, int chartNumber) throws DocumentException { List> res = new ArrayList<>(); String xml = workingPath + "\\word\\charts\\chart" + chartNumber + ".xml"; if (!(new File(xml).exists())) { @@ -84,6 +81,25 @@ public class TestOutSideExcel { //折线图 //将xml用IDEA打开,搜索关键的数据值,然后右键查看XPATH完整路径可以获取到下面的路径 ///c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:cat/c:numRef/c:numCache/c:pt/c:v + + //在每个已知的图表类型中查找,找到后跳出循环 + //声明一个数组,图表的所有类型 + String[] CHART_TYPES = {"lineChart", "barChart"};//折线,柱状 + + String type = ""; + for (String chartType : CHART_TYPES) { + if (root.element("chart").element("plotArea") + .element(chartType) != null) { + type = chartType; + break; + } + } + if (StrKit.isBlank(type)) { + System.out.println("没有找到图表类型,请扩充图表类型"); + System.out.println(root.element("chart").element("plotArea")); + System.exit(-1); + } + List xList = root.element("chart").element("plotArea") .element(type).element("ser").element("cat") .element("numRef").element("numCache").elements("pt"); @@ -104,7 +120,16 @@ public class TestOutSideExcel { for (int j = 0; j < allValueList.size(); j++) { List yList = allValueList.get(j); - row.add(yList.get(i).element("v").getText()); + if (yList == null || i + 1 > yList.size() || yList.get(i) == null) { + row.add(null); + continue; + } + Element e = yList.get(i).element("v"); + if (e != null) { + row.add(e.getText()); + } else { + row.add(null); + } } res.add(row); } @@ -118,16 +143,13 @@ public class TestOutSideExcel { String workingPath = "C:\\zipFile"; UnCompress(sourceDoc, workingPath); //2、我们需要第几个图表 - int chartNumber = 1; - //读取第一个图表 - List> list1 = readChar(workingPath, chartNumber, LINE); - ExcelKit.printTable(list1); - System.out.println("========================================================="); - - //读取第二个图表 - chartNumber = 2; - List> list2 = readChar(workingPath, chartNumber, BAR); - ExcelKit.printTable(list2); + for (int chartNumber = 4; chartNumber <= 4; chartNumber++) { + System.out.println("正在处理第" + chartNumber + "个图表的信息~"); + //读取图表 + List> list = readChar(workingPath, chartNumber); + ExcelKit.printTable(list); + System.out.println("========================================================="); + } } }