poi doc hwpf 读取列表段落序号
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.model.ListData;
import org.apache.poi.hwpf.model.ListLevel;
import org.apache.poi.hwpf.model.ListTables;
import org.apache.poi.hwpf.usermodel.Paragraph;
public class ReadDocNumber {
public static String getListNumber(Paragraph paragraph, HWPFDocument document, boolean isFirst) {
ListTables listTables = document.getListTables();
int lsid = paragraph.getList().getLsid();
ListData listData = listTables.getListData(lsid);
ListLevel[] listLevel = listData.getLevels();
int ilvl = paragraph.getIlvl();
ListLevel level = listLevel[ilvl];
String numText = level.getNumberText();
int numText2 = level.getNumberFormat();
return getNumText(numText, numText2, isFirst);
}
private static int level_1_counter = 0;
private static int level_2_counter = 0;
private static int level_3_counter = 0;
private static int level_4_counter = 0;
private static int level_5_counter = 0;
private static int level_6_counter = 0;
private static int level_7_counter = 0;
private static int level_8_counter = 0;
public static int getLevel(String numLevelText, int numText) {
if (null == numLevelText) {
return 0;
}
if ("\u0000.".equals(numLevelText)) {
return 1;
}
if (numLevelText.endsWith(".\u0000")) {
return 2;
}
if ("(\u0000)".equals(numLevelText) && numText == 4) {
return 4;
}
if ("(\u0000)".equals(numLevelText) && numText == 3) {
return 7;
}
if ("(\u0000)".equals(numLevelText) && numText == 0) {
return 3;
}
if ("\u0000)".equals(numLevelText) && numText == 4) {
return 6;
}
if ("\u0000)".equals(numLevelText) && numText == 3) {
return 8;
}
if ("\u0000)".equals(numLevelText) && numText == 0) {
return 5;
}
return -1;
}
public static String getNumText(String numberFormat, int numText, boolean isFirst) {
int level = getLevel(numberFormat, numText);
if (level == 0) {
return null;
}
if (level == -1) {
String space = "";
if (level_4_counter != 0) {
space = getSpace(4);
} else if (level_7_counter != 0) {
space = getSpace(7);
} else if (level_3_counter != 0) {
space = getSpace(3);
} else if (level_6_counter != 0) {
space = getSpace(6);
} else if (level_8_counter != 0) {
space = getSpace(8);
} else if (level_5_counter != 0) {
space = getSpace(5);
} else if (level_2_counter != 0) {
space = getSpace(2);
} else if (level_1_counter != 0) {
space = getSpace(1);
}
return space + numberFormat;
}
if (level == 1) {
if (isFirst) {
level_1_counter = 0;
}
level_1_counter++;
level_2_counter = 0;
level_3_counter = 0;
level_4_counter = 0;
level_5_counter = 0;
level_6_counter = 0;
level_7_counter = 0;
level_8_counter = 0;
return level_1_counter + ". ";
}
if (level == 2) {
if (isFirst) {
level_2_counter = 0;
}
level_2_counter++;
level_3_counter = 0;
level_4_counter = 0;
level_5_counter = 0;
level_6_counter = 0;
level_7_counter = 0;
level_8_counter = 0;
return getSpace(1) + String.valueOf(level_1_counter) + "." + String.valueOf(level_2_counter) + " ";
}
if (level == 3) {
if (isFirst) {
level_3_counter = 0;
}
level_3_counter++;
level_4_counter = 0;
level_5_counter = 0;
level_6_counter = 0;
level_7_counter = 0;
level_8_counter = 0;
return getSpace(2) + "(" + level_3_counter + ")";
}
if (level == 4) {
if (isFirst) {
level_4_counter = 0;
}
level_4_counter++;
level_5_counter = 0;
level_6_counter = 0;
level_7_counter = 0;
level_8_counter = 0;
return getSpace(3) + "(" + (char) (96 + level_4_counter) + ")";
}
if (level == 5) {
if (isFirst) {
level_5_counter = 0;
}
level_5_counter++;
level_6_counter = 0;
level_7_counter = 0;
level_8_counter = 0;
return getSpace(4) + level_5_counter + ")";
}
if (level == 6) {
if (isFirst) {
level_6_counter = 0;
}
level_6_counter++;
level_7_counter = 0;
level_8_counter = 0;
return (char) (96 + level_6_counter) + ")";
}
if (level == 7) {
if (isFirst) {
level_7_counter = 0;
}
level_7_counter++;
level_8_counter = 0;
return (char) (64 + level_7_counter) + ")";
}
if (level == 8) {
if (isFirst) {
level_8_counter = 0;
}
level_8_counter++;
return "(" + (char) (64 + level_8_counter) + ")";
}
return "";
}
private static String getSpace(int i) {
String ret = "";
for (int k = 0; k < i; k++) {
ret += " ";
}
return ret;
}
}