|
|
|
|
package com.dsideal.base.Tools.Test;
|
|
|
|
|
|
|
|
|
|
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
|
|
|
|
import org.dom4j.Document;
|
|
|
|
|
import org.dom4j.DocumentException;
|
|
|
|
|
import org.dom4j.Element;
|
|
|
|
|
import org.dom4j.io.SAXReader;
|
|
|
|
|
import org.xml.sax.SAXException;
|
|
|
|
|
|
|
|
|
|
import javax.xml.parsers.ParserConfigurationException;
|
|
|
|
|
import javax.xml.xpath.XPathExpressionException;
|
|
|
|
|
import java.io.File;
|
|
|
|
|
import java.io.FileInputStream;
|
|
|
|
|
import java.io.FileOutputStream;
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.zip.ZipEntry;
|
|
|
|
|
import java.util.zip.ZipInputStream;
|
|
|
|
|
|
|
|
|
|
public class TestOutSideExcel {
|
|
|
|
|
/**
|
|
|
|
|
* 解压缩
|
|
|
|
|
*
|
|
|
|
|
* @throws IOException
|
|
|
|
|
*/
|
|
|
|
|
public static void UnCompress(String wordPath, String workingPath) throws IOException {
|
|
|
|
|
File file = new File(wordPath);//取得word文件
|
|
|
|
|
FileInputStream inputStream = new FileInputStream(file);
|
|
|
|
|
ZipInputStream zipInputStream = new ZipInputStream(inputStream);
|
|
|
|
|
ZipEntry entry;
|
|
|
|
|
byte[] ch = new byte[256];
|
|
|
|
|
while ((entry = zipInputStream.getNextEntry()) != null) {
|
|
|
|
|
File zFile = new File(workingPath + entry.getName());
|
|
|
|
|
if (entry.isDirectory()) {
|
|
|
|
|
if (!zFile.exists()) {
|
|
|
|
|
zFile.mkdirs();
|
|
|
|
|
}
|
|
|
|
|
zipInputStream.closeEntry();
|
|
|
|
|
} else {
|
|
|
|
|
File fpath = new File(zFile.getParent());
|
|
|
|
|
if (!fpath.exists()) {
|
|
|
|
|
fpath.mkdirs();
|
|
|
|
|
}
|
|
|
|
|
FileOutputStream outputStream = new FileOutputStream(zFile);
|
|
|
|
|
int i;
|
|
|
|
|
while ((i = zipInputStream.read(ch)) != -1) {
|
|
|
|
|
outputStream.write(ch, 0, i);
|
|
|
|
|
}
|
|
|
|
|
zipInputStream.closeEntry();
|
|
|
|
|
outputStream.close();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
inputStream.close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void main(String[] args) throws IOException, InvalidFormatException, InterruptedException, ParserConfigurationException, SAXException, XPathExpressionException, DocumentException {
|
|
|
|
|
String sourceDoc = "c:/西双版纳州人口变化及其对教育的影响20240420.docx";
|
|
|
|
|
|
|
|
|
|
//1、将word文件解压缩
|
|
|
|
|
String workingPath = "C:\\zipFile";
|
|
|
|
|
UnCompress(sourceDoc, workingPath);
|
|
|
|
|
//2、我们需要第几个图表
|
|
|
|
|
int chartNumber = 1;
|
|
|
|
|
String xml = workingPath + "\\word\\charts\\chart" + chartNumber + ".xml";
|
|
|
|
|
if (!(new File(xml).exists())) {
|
|
|
|
|
System.out.println("没有找到第" + chartNumber + "个图表");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
//3、开始读取
|
|
|
|
|
// 创建 SAXReader 对象,读取 XML 文件
|
|
|
|
|
SAXReader reader = new SAXReader();
|
|
|
|
|
Document document = reader.read(new File(xml));
|
|
|
|
|
// 获取根元素
|
|
|
|
|
Element root = document.getRootElement();
|
|
|
|
|
|
|
|
|
|
//折线图
|
|
|
|
|
//将xml用IDEA打开,搜索关键的数据值,然后右键查看XPATH完整路径可以获取到下面的路径
|
|
|
|
|
///c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:cat/c:numRef/c:numCache/c:pt/c:v
|
|
|
|
|
List<Element> xList = root.element("chart").element("plotArea")
|
|
|
|
|
.element("lineChart").element("ser").element("cat")
|
|
|
|
|
.element("numRef").element("numCache").elements("pt");
|
|
|
|
|
|
|
|
|
|
for (Element e : xList) {
|
|
|
|
|
System.out.println(e.element("v").getText());
|
|
|
|
|
}
|
|
|
|
|
///c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:val/c:numRef/c:numCache
|
|
|
|
|
List<Element> yList = root.element("chart").element("plotArea")
|
|
|
|
|
.element("lineChart").element("ser").element("val")
|
|
|
|
|
.element("numRef").element("numCache").elements("pt");
|
|
|
|
|
|
|
|
|
|
for (Element e : yList) {
|
|
|
|
|
System.out.println(e.element("v").getText());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|