有没有办法确定org.apache.poi.hwpf.model.ListData的实例是否属于编号列表或项目符号列表?
我使用Apache Poi的org.apache.poi.hwpf.HWPFDocument类来读取word文档的内容,以便生成超文本标记语言。我可以通过检查我正在处理的段落是否是org.apache.poi.hwpf.model.ListData的实例来识别文档中的列表项。我找不到一种方法来确定ListData属于项目符号列表还是编号列表。
发布于 2009-12-16 18:19:34
我想我已经找到了我自己问题的答案。
ListEntry aListEntry = (ListEntry) aParagraph;
ListData listData = listTables.getListData(aListEntry.getIlfo());
int numberFormat = listData.getLevel(listData.numLevels()).getNumberFormat();数字格式为项目符号返回23,为编号列表返回0。我敢说,有多种格式的数字可以解释为项目符号或编号列表,但至少我现在可以识别它们!
发布于 2010-03-06 04:52:10
我最近发布了另一种确定列表类型的方法。不幸的是,这种方式只对几个测试有效。
我现在可以确认leighgory确定列表类型的方式了。
发布于 2010-05-19 17:05:36
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值编号方案
15个单字节字符
16汉字编号3 (dbnum3)。
17汉字编号4 (dbnum4)。
18圆形编号(圆形)。
19双字节阿拉伯数字
20 46个拼音双字节片假名字符(_aiueo_dbchar)。
21 46拼音双字节片假名字符(_iroha_dbchar)。
22阿拉伯语,前导为零(01,02,03,...,10,11)
23个项目符号(根本没有数字)
24朝鲜语数字2(假名)。
25朝鲜语数字1(选择)。
26中文数字1 (gb1)。
27中文数字2 (gb2)。
28中文数字3 (gb3)。
29中文数字4 (gb4)。
30中国生肖1
31中国生肖2
32中国生肖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小写俄文字母
https://stackoverflow.com/questions/1908429
复制相似问题