有没有办法确定org.apache.poi.hwpf.model.ListData
的实例是否属于编号列表或项目符号列表?
我正在使用Apache Poi的org.apache.poi.hwpf.HWPFDocument
类来读取word文档的内容以生成HTML。我可以通过检查我正在使用的段落是org.apache.poi.hwpf.model.ListData
的实例来识别文档中的列表项。我找不到确定ListData
是否属于项目符号列表或编号列表的方法。
答案 0 :(得分:0)
我想我找到了自己问题的答案。
ListEntry aListEntry = (ListEntry) aParagraph;
ListData listData = listTables.getListData(aListEntry.getIlfo());
int numberFormat = listData.getLevel(listData.numLevels()).getNumberFormat();
数字格式为子弹点返回23,为编号列表返回0。我敢说有多个格式编号可以解释为子弹点或编号列表,但至少我现在可以识别它们了!
答案 1 :(得分:0)
我最近发布了另一种确定列表类型的方法。不幸的是,这种方式仅适用于一些测试。
我现在可以确认leighgorys的方式来确定列表类型。
答案 2 :(得分:0)
public class ListTest {
public static void main(String[] args) {
String filename = "/some/path/to/ListTest.doc";
try {
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(filename));
HWPFDocument doc = new HWPFDocument(fs);
//Get a table of all the lists in this document
ListTables listtables = doc.getListTables();
Paragraph para;
Range range = doc.getRange();
for(int x=0; x<range.numParagraphs(); x++) {
para = range.getParagraph(x);
//When non-zero, (1-based) index into the pllfo
//identifying the list to which the paragraph belongs
if( para.getIlfo()!=0 ) {
//Get the list this paragraph belongs to
ListData listdata = listtables.getListData(para.getIlfo());
//Now get all the levels for this list
ListLevel[] listlevel = listdata.getLevels();
//Find the list level info for our paragraph
ListLevel level = listlevel[para.getIlvl()];
System.out.print("Text: \"" + para.text() + "\"");
//list level for this paragraph
System.out.print("\tListLevel: " + para.getIlvl());
//Additional text associated with list symbols
System.out.print("\tgetNumberText: \"" + level.getNumberText() + "\"" );
//Format value for the style of list symbols
System.out.println("\tgetNumberFormat: " + level.getNumberFormat() );
} else {
System.out.println();
}
}
} catch(Exception e) {
e.printStackTrace();
}
}
}
nfc value编号方案
15个单字节字符
16汉字编号3(dbnum3)。
17汉字编号4(dbnum4)。
18圈编号(circlenum)。
19个双字节阿拉伯语编号
20 46个拼音双字节片假名字符( aiueo dbchar)。
21 46个拼音双字节片假名字符( iroha dbchar)。
22阿拉伯语,前导零(01,02,03,...,10,11)
23子弹(根本没有号码)
24韩国编号2(ganada)。
25韩国编号1(chosung)。
26中文编号1(gb1)。
27中文编号2(gb2)。
28个中文编号3(gb3)。29中文编号4(gb4)。
30个中国十二生肖编号1 31个中国十二生肖编号232中国十二生肖编号3
33个台湾双字节编号1
34台湾双字节编号2
35台湾双字节编号3
36个台湾双字节编号4
37中文双字节编号1
38个中文双字节编号2
39个中文双字节编号3
40个中文双字节编号4
41韩文双字节编号1
42韩文双字节编号2
43韩文双字节编号3
44韩文双字节编号4
45希伯来语非标准小数
46阿拉伯语Alif Ba Tah
47希伯来圣经标准
48阿拉伯语Abjad风格
49个印地语元音50个印地语辅音
51印地语数字
52印地语描述性(红衣主教)
53个泰国信件
54泰国数字
55泰语描述(红衣主教
56名越南描述性(红衣主教)
57页码格式 - # -
58小写俄语字母