spire.doc是一个很强大的word类库,隶属与冰蓝科技,它简化了对word开发的代码量,下面有我对spire.doc总结的一写工具类:
1.获取文档内所有节
/**
* 获取所有节
*
* @param document 文档对象
* @return
*/
public static List<String> getSection(Document document) {
ArrayList<String> list = new ArrayList<>();
SectionCollection sections = document.getSections();
for (int i = 1; i <= sections.getCount(); i++) {
list.add("节" + i);
}
return list;
}
2. 使用正则表达式找到您想匹配的文本内容
public static List<String> getPlaceholder(Document document, String regular) {
ArrayList<String> list = new ArrayList<>();
Pattern compile = Pattern.compile(regular);
TextSelection[] textSelections = document.findAllPattern(compile, true);
if (textSelections != null) {
for (TextSelection selection : textSelections) {
TextRange[] results = selection.getAsRange();
for (TextRange result : results) {
list.add(result.getText());
}
}
}
return list;
}
3.获取文档对象
/**
* 获取文档对象
*
* @param filePath 文档路径
* @return
*/
public static Document getDocument(String filePath) {
Document document = new Document();
document.loadFromFile(filePath);
return document;
}
4.获取书签对应的表格
/**
* 获取书签对应的所有表格
*
* @param
* @return
*/
public static ArrayList<Table> BookGetTable(Document document) {
ArrayList<Table> tables = new ArrayList<>();
ArrayList<Bookmark> bookMark = getBookMarks(document);
for (int i = 0; i < bookMark.size(); i++) {
if (bookMark.get(i).getName().contains("Table")
&& !bookMark.get(i).getName().contains("DivName")
&& !bookMark.get(i).getName().contains("Remark")
) {
for (int z = 0; z < bookMark.size(); z++) {
Paragraph paragraph = bookMark.get(z).getBookmarkStart().getOwnerParagraph();
if (paragraph.isInCell()) {
//通过书签获取表格
Table table = (Table) paragraph.getOwner().getOwner().getOwner();
// if (table != null) {
tables.add(table);
// }
}
}
}
}
return tables;
}
5.获取指定书签对应表格
/**
* 获取指定书签对应表格
*
* @param bookmark
* @return
*/
public static Table getTable(Bookmark bookmark) {
if (bookmark.getName().contains("Table")
&& !bookmark.getName().contains("DivName")
&& !bookmark.getName().contains("Remark")
) {
Paragraph paragraph = bookmark.getBookmarkStart().getOwnerParagraph();
if (paragraph.isInCell()) {
//通过书签获取表格
Table table = (Table) paragraph.getOwner().getOwner().getOwner();
return table;
}
}
return null;
}
6.获取文档内所有书签
/**
* 获取某个文档中所有书签
*
* @param
* @return ArrayList<String>书签名称集合
*/
public static ArrayList<Bookmark> getBookMarks(Document doc) {
ArrayList<Bookmark> arrayList = new ArrayList<>();
// 获取所有书签
BookmarkCollection bookmarks = doc.getBookmarks();
for (int i = 0; i <= bookmarks.getCount() - 1; i++) {
//获取每个书签
Bookmark bookmark = bookmarks.get(i);
//获取每个书签名称
// String name = bookmark.getName();
//将书签名称保存到list集合里
if ("_GoBack".equals(bookmark.getName())) {
continue;
}
arrayList.add(bookmark);
}
return arrayList;
}