main
黄海 8 months ago
parent a353abe0d9
commit 8d3aa2b1f4

@ -10,7 +10,6 @@ import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xwpf.usermodel.XWPFChart;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
@ -258,50 +257,6 @@ public class DsKit {
applyStyle(outRow, 0, stringList.size() - 1, dataStyle);
}
/**
* List
*
* @param affCharts doc.getCharts()
* @return
*/
public static List<XWPFChart> getSortListForXWPFChart(List<XWPFChart> affCharts) {
List<XWPFChart> charts = new ArrayList<>();
int itNumber = 0; //计数器
int oldNumber = 0; //入参计数器
while (itNumber < affCharts.size()) {
// 从oldCharts.get(0)开始检索,获取排序用图表名
String name = affCharts.get(oldNumber).getPackagePart().getPartName().toString();
// 获取此图表排序
String chartsNum = "";// 图表序号
boolean flag = false; // 上一个是否为数字
for (int i = 0; i < name.length(); i++) {
if (chartsNum.equals("") && name.charAt(i) >= 48 && name.charAt(i) <= 57) {
chartsNum += name.charAt(i);
flag = true;
} else if (flag && name.charAt(i) >= 48 && name.charAt(i) <= 57) {
chartsNum += name.charAt(i);
flag = true;
} else {
flag = false;
}
}
//对比图表序号数字
int thisChartNum = Integer.parseInt(chartsNum);
if (thisChartNum == itNumber + 1) { //如果相等则加入返回list,且itNumber++
charts.add(affCharts.get(oldNumber));
itNumber++;
}
//入参计数器+1 如果达到最大值则重置为0
if (oldNumber == affCharts.size() - 1) {
oldNumber = 0;
} else {
oldNumber++;
}
}
return charts;
}
/**
*
*
@ -483,7 +438,7 @@ public class DsKit {
*
* @throws IOException
*/
public static void unCompress(String wordPath) throws IOException {
public static int unCompress(String wordPath) throws IOException {
if (new File(DocxUnzipDirectory).exists()) {
FileUtils.deleteDirectory(new File(DocxUnzipDirectory));
}
@ -514,6 +469,19 @@ public class DsKit {
}
}
inputStream.close();
String workingPath = DocxUnzipDirectory + "word\\charts\\";
//这个目录下的所有文件
File[] files = new File(workingPath).listFiles();
int cnt = 0;
if (files != null) {
for (File f : files) {
if (f.getName().startsWith("chart") && f.getName().endsWith(".xml")) {
cnt++;
}
}
}
return cnt;
}
@ -592,7 +560,7 @@ public class DsKit {
Element ser = ce.elements("ser").get(i);
//cat 标签
Element cat = ser.element("cat");
if(cat==null) return tList;
if (cat == null) return tList;
Element numRef = cat.element("numRef");
if (numRef == null) numRef = cat.element("strRef");//这玩意有时是strRef有时是numRefShit~
//数据

@ -23,7 +23,7 @@ public class A9 {
static String sampleExcelPath = "D:\\dsWork\\YunNanDsBase\\Doc\\待处理\\区\\【9】城镇&乡村人口变化及预测-双\\城镇&乡村人口变化及预测-双.xlsx";
//源文件
static String parentPath = "D:\\dsWork\\YunNanDsBase\\Doc\\有问题的县区";
static String parentPath = "c:/新建文件夹";
//哪些是处理不了的,就不处理了~
static String[] excludeCityList = {"~$", "磨憨-磨丁", "经开区", "阳宗海"};
@ -117,6 +117,7 @@ public class A9 {
chartNumber = 3;
List<List<String>> source2 =
DsKit.getChartData(file.getAbsolutePath(), chartNumber, 1);
DsKit.printTable(source2);
if (source2 != null) {
//本例中要乘以多少呢?
String xmlPath = DsKit.DocxUnzipDirectory + "word\\charts\\chart" + chartNumber + ".xml";

@ -13,10 +13,14 @@ import java.util.List;
public class TestOutSideExcel {
public static void main(String[] args) throws IOException, InvalidFormatException, InterruptedException, ParserConfigurationException, SAXException, XPathExpressionException, DocumentException {
String sourceDoc = "c:/《武定县人口变化及其对教育影响的报告》.docx";
String sourceDoc = "C:/新建文件夹/富宁县(空35)(1).docx";
int chartCount = DsKit.unCompress(sourceDoc);
System.out.println(chartCount);
//需要第几个图表
for (int chartNumber = 1; chartNumber <= 1; chartNumber++) {
for (int chartNumber = 1; chartNumber <= 37; chartNumber++) {
System.out.println("正在处理第" + chartNumber + "个图表的信息~");
//读取图表
List<List<String>> list = DsKit.getChartData(sourceDoc, chartNumber, 0);

Loading…
Cancel
Save