POI获取Word⼤纲级别,操作Word(2018-06-03更新)
之前的代码有误,为了避免误⼈⼦弟,2018-06-03更新。
Word中的⼤纲级别,可以通过getPPr().getOutlineLvl()直接提取,但需要注意,Word中段落级别,通过如下三种⽅式定义:
1、直接对段落进⾏定义;
2、对段落的样式进⾏定义;
3、对段落样式的基础样式进⾏定义。
pogo什么意思因此,在通过“getPPr().getOutlineLvl()”提取时,需要依次在如上三处读取。
以下是⾃⽤的测试代码:
//判断该段落是否设置了⼤纲级别
if (CTP().getPPr().getOutlineLvl() != null) {
// System.out.println("getCTP()");
System.out.ParagraphText());dsj
System.out.CTP().getPPr().getOutlineLvl().getVal());
//判断该段落的样式是否设置了⼤纲级别
} el if (Style()).getCTStyle().getPPr().getOutlineLvl() != null) {
// System.out.println("getStyle");
System.out.ParagraphText());
System.out.println(
//判断该段落的样式的基础样式是否设置了⼤纲级别
} el if (Style()).getCTStyle().getBadOn().getVal())
.getCTStyle().getPPr().getOutlineLvl() != null) {
/
/ System.out.println("getBadOn");
System.out.ParagraphText());
String styleName = Style()).getCTStyle().getBadOn().getVal();
System.out
.Style(styleName).getCTStyle().getPPr().getOutlineLvl().getVal());
//没有设置⼤纲级别
} el {
// System.out.println("null");
}
另外:之前通过“veBodyElement()”进⾏拆分,需要注意的是,这⾥的BodyElement与XWPFParagraph不是完全等价的,即BodyElement中包括XWPFParagraph,移除时完全通过XWPFParagraph编号会错乱。判断BodyElement类型之后,强转就能够获得XWPFParagraph对象。
if (ElementType() == BodyElementType.PARAGRAPH) {
XWPFParagraph para = (XWPFParagraph) bodyElement;
原⽂
poi获取word⽂档⼤纲,2007以上版本,即使⽤XWPFDocument:
XWPFDocument doc = new XWPFDocument(is);
List<XWPFParagraph> paras = Paragraphs();
XWPFStyles styles =Styles();
for (XWPFParagraph para : paras) {
System.out.StyleID());
事与愿违英文}
通过getStyleID或getStyle能够获取段落样式的名称;该名称可以⼤概猜到⼤纲级别;
进⼀步获取⼤纲样式,需要通过⽂件样式获得,通过
XWPFStyles styles =Styles();
获取⽂件样式,
通过
获取⽂件样式CTStyles,打印出来的效果是:
<xml-fragment mc:Ignorable="w14"xmlns:mc="/markup-compatibility/2006"xmlns:r=" <w:docDefaults>
<w:rPrDefault>
<w:rPr>
really什么意思<w:rFonts w:ascii="Calibri"w:cs="Times New Roman"w:eastAsia="宋体"w:hAnsi="Calibri"/>
<w:lang w:bidi="ar-SA"w:eastAsia="zh-CN"w:val="en-US"/>
</w:rPr>
</w:rPrDefault>
<w:pPrDefault/>
</w:docDefaults>
<w:latentStyles w:count="267"w:defLockedState="0"w:defQFormat="0"w:defSemiHidden="1"w:defUIPriority="99"w:defUnhideWhenUd="1">
<w:lsdException w:name="Normal"w:miHidden="0"w:uiPriority="0"w:unhideWhenUd="0"/>
<w:lsdException w:name="heading 1"w:qFormat="1"w:miHidden="0"w:uiPriority="9"w:unhideWhenUd="0"/>
<w:lsdException w:name="heading 2"w:qFormat="1"w:miHidden="0"w:uiPriority="9"w:unhideWhenUd="0"/>
<w:lsdException w:name="heading 3"w:qFormat="1"w:miHidden="0"w:uiPriority="9"w:unhideWhenUd="0"/>
<w:lsdException w:name="heading 4"w:qFormat="1"w:miHidden="0"w:uiPriority="9"w:unhideWhenUd="0"/>
<w:lsdException w:name="heading 5"w:qFormat="1"w:miHidden="0"w:uiPriority="0"w:unhideWhenUd="0"/>
<w:lsdException w:name="heading 6"w:qFormat="1"w:miHidden="0"w:uiPriority="0"w:unhideWhenUd="0"/>
<w:lsdException w:name="heading 7"w:uiPriority="0"/>
<w:lsdException w:name="heading 8"w:uiPriority="0"/>
<w:lsdException w:name="heading 9"w:uiPriority="0"/>
<w:lsdException w:name="toc 1"w:uiPriority="39"/>
<w:lsdException w:name="toc 2"w:uiPriority="39"/>
<w:lsdException w:name="toc 3"w:uiPriority="39"/>
<w:lsdException w:name="toc 4"w:uiPriority="39"/>
<w:lsdException w:name="toc 5"w:uiPriority="39"/>
<w:lsdException w:name="toc 6"w:uiPriority="39"/>
<w:lsdException w:name="toc 7"w:uiPriority="39"/>
<w:lsdException w:name="toc 8"w:uiPriority="39"/>
autocracy<w:lsdException w:name="toc 9"w:uiPriority="39"/>
<w:lsdException w:name="caption"w:miHidden="0"w:uiPriority="0"w:unhideWhenUd="0"/>
<w:lsdException w:name="Title"w:miHidden="0"w:uiPriority="10"w:unhideWhenUd="0"/>
<w:lsdException w:name="Default Paragraph Font"w:uiPriority="1"/>
<w:lsdException w:name="Body Text"w:qFormat="1"/>
<w:lsdException w:name="Subtitle"w:miHidden="0"w:uiPriority="11"w:unhideWhenUd="0"/>
<w:lsdException w:name="Strong"w:miHidden="0"w:uiPriority="22"w:unhideWhenUd="0"/>
<w:lsdException w:name="Emphasis"w:miHidden="0"w:uiPriority="20"w:unhideWhenUd="0"/>
<w:lsdException w:name="Table Grid"w:miHidden="0"w:uiPriority="59"w:unhideWhenUd="0"/>
<w:lsdException w:name="Placeholder Text"w:unhideWhenUd="0"/>
<w:lsdException w:name="No Spacing"w:miHidden="0"w:uiPriority="1"w:unhideWhenUd="0"/>
<w:lsdException w:name="Light Shading"w:uiPriority="60"/>
<w:lsdException w:name="Light List"w:uiPriority="61"/>
<w:lsdException w:name="Light Grid"w:uiPriority="62"/>
<w:lsdException w:name="Medium Shading 1"w:uiPriority="63"/>
<w:lsdException w:name="Medium Shading 2"w:uiPriority="64"/>
<w:lsdException w:name="Medium List 1"w:uiPriority="65"/>
<w:lsdException w:name="Medium List 2"w:uiPriority="66"/>
<w:lsdException w:name="Medium Grid 1"w:uiPriority="67"/>
<w:lsdException w:name="Medium Grid 2"w:uiPriority="68"/>
<w:lsdException w:name="Medium Grid 3"w:uiPriority="69"/>
<w:lsdException w:name="Dark List"w:uiPriority="70"/>
<w:lsdException w:name="Colorful Shading"w:uiPriority="71"/>
<w:lsdException w:name="Colorful List"w:uiPriority="72"/>
<w:lsdException w:name="Colorful Grid"w:uiPriority="73"/>
<w:lsdException w:name="Light List Accent 1"w:uiPriority="61"/>
<w:lsdException w:name="Light Grid Accent 1"w:uiPriority="62"/>
<w:lsdException w:name="Medium Shading 1 Accent 1"w:uiPriority="63"/>
<w:lsdException w:name="Medium Shading 2 Accent 1"w:uiPriority="64"/>
<w:lsdException w:name="Medium List 1 Accent 1"w:uiPriority="65"/>
<w:lsdException w:name="Revision"w:unhideWhenUd="0"/>
<w:lsdException w:name="List Paragraph"w:miHidden="0"w:uiPriority="34"w:unhideWhenUd="0"/> <w:lsdException w:name="Quote"w:miHidden="0"w:uiPriority="29"w:unhideWhenUd="0"/>
<w:lsdException w:name="Inten Quote"w:miHidden="0"w:uiPriority="30"w:unhideWhenUd="0"/> <w:lsdException w:name="Medium List 2 Accent 1"w:uiPriority="66"/>
<w:lsdException w:name="Medium Grid 1 Accent 1"w:uiPriority="67"/>
<w:lsdException w:name="Medium Grid 2 Accent 1"w:uiPriority="68"/>
<w:lsdException w:name="Medium Grid 3 Accent 1"w:uiPriority="69"/>
<w:lsdException w:name="Dark List Accent 1"w:uiPriority="70"/>
shoot是什么意思
<w:lsdException w:name="Colorful Shading Accent 1"w:uiPriority="71"/>
<w:lsdException w:name="Colorful List Accent 1"w:uiPriority="72"/>
<w:lsdException w:name="Colorful Grid Accent 1"w:uiPriority="73"/>
<w:lsdException w:name="Light Shading Accent 2"w:uiPriority="60"/>
<w:lsdException w:name="Light List Accent 2"w:uiPriority="61"/>
<w:lsdException w:name="Light Grid Accent 2"w:uiPriority="62"/>
<w:lsdException w:name="Medium Shading 1 Accent 2"w:uiPriority="63"/>
<w:lsdException w:name="Medium Shading 2 Accent 2"w:uiPriority="64"/>
<w:lsdException w:name="Medium List 1 Accent 2"w:uiPriority="65"/>
<w:lsdException w:name="Medium List 2 Accent 2"w:uiPriority="66"/>
<w:lsdException w:name="Medium Grid 1 Accent 2"w:uiPriority="67"/>
<w:lsdException w:name="Medium Grid 2 Accent 2"w:uiPriority="68"/>
<w:lsdException w:name="Medium Grid 3 Accent 2"w:uiPriority="69"/>
<w:lsdException w:name="Dark List Accent 2"w:uiPriority="70"/>cnki在线翻译
<w:lsdException w:name="Colorful Shading Accent 2"w:uiPriority="71"/>
<w:lsdException w:name="Colorful List Accent 2"w:uiPriority="72"/>
<w:lsdException w:name="Colorful Grid Accent 2"w:uiPriority="73"/>
<w:lsdException w:name="Light Shading Accent 3"w:uiPriority="60"/>
<w:lsdException w:name="Light List Accent 3"w:uiPriority="61"/>
<w:lsdException w:name="Light Grid Accent 3"w:uiPriority="62"/>
<w:lsdException w:name="Medium Shading 1 Accent 3"w:uiPriority="63"/>
<w:lsdException w:name="Medium Shading 2 Accent 3"w:uiPriority="64"/>
<w:lsdException w:name="Medium List 1 Accent 3"w:uiPriority="65"/>
<w:lsdException w:name="Medium List 2 Accent 3"w:uiPriority="66"/>
<w:lsdException w:name="Medium Grid 1 Accent 3"w:uiPriority="67"/>
<w:lsdException w:name="Medium Grid 2 Accent 3"w:uiPriority="68"/>
<w:lsdException w:name="Medium Grid 3 Accent 3"w:uiPriority="69"/>
<w:lsdException w:name="Dark List Accent 3"w:uiPriority="70"/>
<w:lsdException w:name="Colorful Shading Accent 3"w:uiPriority="71"/>
<w:lsdException w:name="Colorful List Accent 3"w:uiPriority="72"/>
<w:lsdException w:name="Colorful Grid Accent 3"w:uiPriority="73"/>
<w:lsdException w:name="Light Shading Accent 4"w:uiPriority="60"/>
<w:lsdException w:name="Light List Accent 4"w:uiPriority="61"/>
<w:lsdException w:name="Light Grid Accent 4"w:uiPriority="62"/>
<w:lsdException w:name="Medium Shading 1 Accent 4"w:uiPriority="63"/>
<w:lsdException w:name="Medium Shading 2 Accent 4"w:uiPriority="64"/>
<w:lsdException w:name="Medium List 1 Accent 4"w:uiPriority="65"/>
<w:lsdException w:name="Medium List 2 Accent 4"w:uiPriority="66"/>
<w:lsdException w:name="Medium Grid 1 Accent 4"w:uiPriority="67"/>
<w:lsdException w:name="Medium Grid 2 Accent 4"w:uiPriority="68"/>
<w:lsdException w:name="Medium Grid 3 Accent 4"w:uiPriority="69"/>
<w:lsdException w:name="Dark List Accent 4"w:uiPriority="70"/>
<w:lsdException w:name="Colorful Shading Accent 4"w:uiPriority="71"/>
<w:lsdException w:name="Colorful List Accent 4"w:uiPriority="72"/>
<w:lsdException w:name="Colorful Grid Accent 4"w:uiPriority="73"/>
<w:lsdException w:name="Light Shading Accent 5"w:uiPriority="60"/>
<w:lsdException w:name="Light List Accent 5"w:uiPriority="61"/>
<w:lsdException w:name="Light Grid Accent 5"w:uiPriority="62"/>
<w:lsdException w:name="Medium Shading 1 Accent 5"w:uiPriority="63"/>
<w:lsdException w:name="Medium Shading 2 Accent 5"w:uiPriority="64"/>
<w:lsdException w:name="Medium List 2 Accent 5"w:uiPriority="66"/>
<w:lsdException w:name="Medium Grid 1 Accent 5"w:uiPriority="67"/>
<w:lsdException w:name="Medium Grid 2 Accent 5"w:uiPriority="68"/>
<w:lsdException w:name="Medium Grid 3 Accent 5"w:uiPriority="69"/>
<w:lsdException w:name="Dark List Accent 5"w:uiPriority="70"/>
<w:lsdException w:name="Colorful Shading Accent 5"w:uiPriority="71"/>
<w:lsdException w:name="Colorful List Accent 5"w:uiPriority="72"/>
<w:lsdException w:name="Colorful Grid Accent 5"w:uiPriority="73"/>
<w:lsdException w:name="Light Shading Accent 6"w:uiPriority="60"/>
<w:lsdException w:name="Light List Accent 6"w:uiPriority="61"/>
<w:lsdException w:name="Light Grid Accent 6"w:uiPriority="62"/>
<w:lsdException w:name="Medium Shading 1 Accent 6"w:uiPriority="63"/>
<w:lsdException w:name="Medium Shading 2 Accent 6"w:uiPriority="64"/>
<w:lsdException w:name="Medium List 1 Accent 6"w:uiPriority="65"/>
<w:lsdException w:name="Medium List 2 Accent 6"w:uiPriority="66"/>
<w:lsdException w:name="Medium Grid 1 Accent 6"w:uiPriority="67"/>
<w:lsdException w:name="Medium Grid 2 Accent 6"w:uiPriority="68"/>
<w:lsdException w:name="Medium Grid 3 Accent 6"w:uiPriority="69"/>
<w:lsdException w:name="Dark List Accent 6"w:uiPriority="70"/>
<w:lsdException w:name="Colorful Shading Accent 6"w:uiPriority="71"/>
<w:lsdException w:name="Colorful List Accent 6"w:uiPriority="72"/>
<w:lsdException w:name="Colorful Grid Accent 6"w:uiPriority="73"/>
<w:lsdException w:name="Subtle Emphasis"w:miHidden="0"w:uiPriority="19"w:unhideWhenUd="0"/> <w:lsdException w:name="Inten Emphasis"w:miHidden="0"w:uiPriority="21"w:unhideWhenUd="0"/> <w:lsdException w:name="Subtle Reference"w:miHidden="0"w:uiPriority="31"w:unhideWhenUd="0"/> <w:lsdException w:name="Inten Reference"w:miHidden="0"w:uiPriority="32"w:unhideWhenUd="0"/> <w:lsdException w:name="Book Title"w:miHidden="0"w:uiPriority="33"w:unhideWhenUd="0"/>
<w:lsdException w:name="Bibliography"w:uiPriority="37"/>
<w:lsdException w:name="TOC Heading"w:qFormat="1"w:uiPriority="39"/>
</w:latentStyles>
<w:style w:default="1"w:styleId="a0"w:type="paragraph">
<w:name w:val="Normal"/>
<w:rsid w:val="00B926D7"/>
<w:pPr>
<w:widowControl w:val="0"/>
<w:jc w:val="both"/>
</w:pPr>
<w:rPr>
<w:rFonts w:ascii="Arial"w:hAnsi="Arial"/>
<w:kern w:val="2"/>
记单词软件
<w:sz w:val="21"/>
<w:szCs w:val="22"/>
</w:rPr>
</w:style>
吸血鬼日记第三季21集<w:style w:styleId="1"w:type="paragraph">
<w:name w:val="heading 1"/>
<w:alias w:val="1级标题"/>
<w:badOn w:val="a0"/>
<w:next w:val="a1"/>
<w:link w:val="1Char"/>
<w:uiPriority w:val="9"/>
<w:qFormat/>
<w:rsid w:val="00FD4CB4"/>
<w:pPr>
<w:keepNext/>
<w:numPr>
<w:numId w:val="1"/>
</w:numPr>
<w:spacing w:after="60"w:before="60"w:line="360"w:lineRule="auto"/>
<w:outlineLvl w:val="0"/>
</w:pPr>
<w:rPr>
<w:b/>
<w:bCs/>
<w:kern w:val="44"/>
<w:sz w:val="32"/>
<w:szCs w:val="44"/>
</w:rPr>
</w:style>
⼤概就是⽂件样式xml格式吧?我猜的。
通过这个就可以获取样式的⼤纲级别,就是这⼀段:
<w:style w:styleId="1" w:type="paragraph">
<w:name w:val="heading 1"/>
“heading 1”应该是段落的⼤纲级别1级。
通过:
String StyleID();
以上是获取word章节⽬录⽅法,下⾯说明word拆分
word的拆分没有找到类似于Word vba/vb/c# 那种copy,saveas那种⽅法,使⽤
doc.tParagraph(paragraph, pos);
以及类似的run⽅法,添加的都是纯⽂本,所以选择了⼀种略显愚蠢的⽅法,之前复制全⽂,再进⾏删减,就不需要考虑样式问题了veBodyElement(i);
poi好像没有提供移除段落的⽅法,即使删除了段落的所有run,貌似还是有⼀个空⽩段落,所以使⽤移除bodyElement的⽅式。
对于word⽂件分割,还有的问题是拆分后,章节的⾃动多级列表也会变化,在Word API中提供了直接将多级列表转换为普通⽂本的⽅法,但是POI貌似没有,或者我没找到,所以同意采⽤笨办法。
先移除样式中的多级列表,然后⼿动添加,相关代码:
//移除多级列表
//在段⾸添加编号
XWPFRun run = (7).inrtNewRun(0);
run.tText("10086:");
以上提供的⽅式不代表最好的,只是本⼈现阶段找到的解决⽅案⽽已
完整核⼼代码如下,不嫌难看的话讲究⽤⽤:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
哈尔滨化妆学校
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.xwpf.urmodel.XWPFDocument;
import org.apache.poi.xwpf.urmodel.XWPFParagraph;
import org.apache.poi.xwpf.urmodel.XWPFRun;
import org.apache.poi.xwpf.urmodel.XWPFStyles;