笨办法,重新进行了排序
/**
* 对图表List重新排序
* @param affCharts doc.getCharts()
* @return
*/
public 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;
}
|